Hangi mikrodenetleyiciyi kullanmalıyım?


10

Bilgisayar programlarımın gerçek dünyayla iletişim kurması için en iyi mikro denetleyici paketini bulmaya çalışıyorum. CPU'mda çalışan programımdan fonksiyonları çağırarak doğrudan okuyabildiğim ve yazabileceğim çok sayıda G / Ç pini (şimdiye kadar ihtiyacım olan 64 dijital, analog ve PWM gibi fantezi bir şey yok) umuyorum.

Çalıştırmak için mikro denetleyicinin kendisine programları indirmek istemiyorum, bunun yerine sadece USB'ye takılan ve bana C ++ programlarından kontrol edebileceğim CPU kontrollü I / O pinleri veren bir şey istiyorum.

Benim için en iyi mikro denetleyici paketi ne olurdu? Umarım ucuzdur, ancak geleceğe dönük bir şeydir, çünkü USB tükenir ve Windows 7 gibi modern işletim sistemleri için 64 bit sürücülere sahiptir. büyük bonus da (gelecekteki genişleme).

Düzenleme: Yüksek örnekleme hızlarına ihtiyacım yok (okuma girişleri için belki 10 Hz, çıkış sinyalleri için 1 kHz) ve pinlerin çoğu yalnızca çıkış için kullanılır. Yepyeni bilgisayarlar (core i7 860) ile çalışıyorum, bu yüzden örnekleme biraz verimsiz veya yavaş olsa bile, hala iyi olmalı (sadece I / O'ya adanmış bir iplik var ve ana program onunla iletişim kursun).

Tek bir mikro denetleyici paketinde 64 G / Ç pinine de ihtiyacım yok. Birçok mikro denetleyici paketini aynı anda arabirim kurabilirsem, bu da işe yarayacaktır (aslında çok daha küçük mikro denetleyici paketlerini arabirimlemek mümkün olacaktır, bu da genişletmenin kolay olduğu anlamına gelir).

Şuna baktım: http://www.schmalzhaus.com/UBW32/index.html

Herkes böyle bir şey ile herhangi bir deneyim oldu mu? İşe yarayıp yaramayacağı hakkında bir fikrin var mı? Ana endişe CPU'yu değil, programı çalıştıran mikro denetleyicidir.


1
Hangi veri hızına ihtiyacınız var?
Kevin Vermeer

@reemrevnivek: Girişler için yaklaşık 10 Hz örnekleme hızı ve çıkışlar için 1 kHz, çok yavaş G / Ç ihtiyacım olacağını tahmin ediyorum.
Faken

Sizin durumunuzda bulduğunuz proje muhtemelen oldukça iyi çalışacaktır. Zaten bir araya getirilmiş bir sistemdir (lehimleme gerekmez her zaman güzeldir) ve ihtiyacınız olan tüm bağlantı noktalarına erişmenizi sağlamak için çok temel bir bellenime sahip gibi görünüyor. Düşük örnekleme oranları, seri bağlantının yeterince iyi çalışacağı anlamına gelir. 40 $ seni iflas etmeyecek, değil mi? Öyleyse, daha pahalı bir çözüme bakmadan önce deneyin.
Wouter Simons

Yanıtlar:


4

Faken,

UBW32, gereksinimlerinizi anlatabileceğim kadar iyi bir yol. 3.3VI / O ile iyi olduğunuz sürece tam olarak ihtiyacınız olanı destekleyecektir (bazıları 5V toleranslıdır, ancak hepsi değil.) Ucuzdur (40 $) ve destekleyebilecek herhangi bir dili kullanarak konuşmak çok kolaydır. seri bağlantı noktaları (hemen hemen hepsi - Basic, C, C #, İşleme, vb.)

76 I / O pininden herhangi birini giriş veya çıkış olarak kullanabilirsiniz. Sevk edildiği gibi stok ürün yazılımı, gömülü tarafta herhangi bir programlama gerektirmeden yapmak istediğiniz şeyi yapmanızı sağlar. Bu verilerin USB üzerinden PC'ye (sadece 10Hz) ulaşması sorun olmayacaktır. Çıkışların 1KHz'e çıkması muhtemelen de iyi işleyecektir.

Herhangi bir sorunuz varsa, lütfen bana bildirin. Size yardımcı olmaktan mutluluk duyarım.

* Brian Schmalz UBW32 yaratıcısı


Güzel tahta, bay. Schmalz
Wouter Simons

Bu meydan okurcasına rahatlatıcı. Makine mühendisliği ile başlamak ve programlama hakkında çok az şey bilmek, hatta elektronik hakkında daha az bilgi sahibi olmak; C / C ++ ile arayüz oluşturan önceden oluşturulmuş bir platform, elektronik ve mikrodenetleyici programlama yönünü değiştirmek için tam olarak ihtiyaç duyduğum şey. Yardımın için teşekkürler!
Faken

9

Ben bir Teensy ++ 2.0 (veya başka bir AT90USB1286 geliştirme kartı) öneririm

128KB Flash, 8KB RAM, 46 I / O pimi, 8 analog giriş

24 $

Teensy kartları USB ile çalışır ve sanal bir COM bağlantı noktası (USB İletişim Cihazı Sınıfı) sağlayabilir. Pin kontrol protokolünüz için bu seri bağlantıyı kullanabilirsiniz. Bu, Windows, OSX ve Linux'ta herhangi bir özel sürücü olmadan çalışır.

Pin kontrol bellenimi oluşturmak için TeensyDuino veya düz eski C vardır.

Biraz vururken, darboğaz mikrodenetleyicinin USB arayüzü olacaktır. Bu nedenle I2C ve SPI gibi protokolleri mikro denetleyiciye kaydırmak isteyebilirsiniz. Bunun için Bus Ninja'mı kullanabilirsiniz .

Kurulumunuza ek Teensies eklemek kolaydır, cihaz başına sadece bir USB bağlantı noktasına ihtiyacınız vardır ve cihaz başına bir sanal COM bağlantı noktası sunar.

(Not. Bu yaklaşım bir dizi ARM işlemcisi ve diğerleri ile eşit derecede iyi çalışacaktır, mevcut yazılımla ucuz geliştirme kartlarını bilmiyorum).

Başka bir yol , G / Ç'yi genişletmek için bir Arduino ve Caterpillar Kalkanı kullanmak olabilir . Aynı G / Ç genişletici etrafında oluşturduğum özel bir kartta 1KHz üzerinde 256 çıkışı güncelleyebildim.


4

Bence istediğiniz bir mikrodenetleyici değil, bir National Instruments PCI-6509 I / O kartı gibi bir şey . USB sürümlerini de alabilirsiniz, ancak PCI-6509'dan daha az G / Ç'ye sahiptirler. National Instruments size C ++ sürücüleri de satacak.

Bu çok pahalı görünüyorsa, Labjack U3 gibi bir şey deneyebilirsiniz .


Labjack'i kullandım, daha ciddi bir şey yaparsanız (daha yüksek örnekleme oranı) bilgisayarınızı yavaşlatır, ancak yavaş örnekleme hızı basit mantığı için harikadır. NI sistemleri harika, ancak yazılım paketi ev kullanımı için çok pahalı. (En azından ev kullanımı için.)
Wouter Simons

4

Açıkladığınız çözüm daha düşük fiyatlar için mevcut değildir. Sorun, kontrol yazılımını bunun için tasarlanmamış bir sistemde çalıştırmak istemenizdir. 64 bağlantı noktasını seri hale getirmek ve yüksek örnekleme hızlarında USB üzerinden itmek ana bilgisayarı son derece yavaşlatır.

Bahsedilen labjack gibi düşük performanslı uygulamalar için çalışan çözümler vardır. Ancak yüksek IO oranlarını işlemek için gereken gerçek çözüm, programlanmış bir sistemi içerecektir. Soru, sistemi uygulamak için hangi programları kullanmanız gerektiğidir.

LabView oldukça pahalı bir yazılımdır (harika çalışır, beni yanlış anlamayın). Yazılım tasarlamak için grafik bir dil kullanır ve bir FPGA veya ARM sisteminde çalışan kodları derler. Tüm bileşenler yüksek hacimli gömülü bir uygulama için çok pahalıdır, ancak sunulan hızlı geliştirme, yüksek performans nedeniyle bir test ortamında kesinlikle harika.

Daha az pahalı bir çözüm, birçok I / O ile linux çalıştıran bir sistem bulmaktır. EmbeddedARM.com bunun için birçok ürün türü sunan bir sitedir. Yazabileceğiniz kod kabuk komut dosyalarında, java, C vb. Olabilir.

Arduino sistemleri daha basit bir geliştirme ortamı ile geliştirilebilir mikrokontrollör sağlarlar. Açık kaynak niteliği , öğrenilecek çok sayıda proje olduğu anlamına gelir .


3

64 GPIO iğnesi olan birini bilmiyorum, bu çok, bunu kendiniz oluşturmanız gerekebilir.

Bunu seri arayüzleri test etmek için kullanıyorum ancak 23 GPIO pinine sahip.

Sadece 'USB'den GPIO'ya' google varsa, bunu yapan bir grup proje var, 32 GPIO ile bulduğum en yakın olan 64 GPIO'lu ilk birkaç sayfada hiç görmedim .

Bir tane yapmak çok zor olmazdı, muhtemelen sadece dahili USB PHY ile 100pin pic18 kullanırım (hız gereksinimlerinize bağlı olarak daha güçlü bir işlemci olabilir)

uC satıcınız bir USB sürücü iskeleti sunduğu sürece çalışmasını sağlamak için çok fazla kodlama yapmanız gerekmez.

Büyük olasılıkla bunun için bir PCB inşa etmeniz gerekir, çünkü 64 GPIO pinine sahip olmak için yeterince büyük olan yongalar genellikle delikli paketlere girmez. GPIO'nuz için daha küçük bir mikrodenetleyici ve harici port genişletici IC'leri de kullanabilirsiniz, ancak bu daha karmaşık bir tasarım ve programlamak için daha karmaşık olacaktır.

Ayrıca, tüm G / Ç pimlerini başlıklara yönlendiren ve USB'ye sahip olan geliştirme panolarına da bakabilirsiniz. Bunlar muhtemelen ihtiyacınız olmayacak bir sürü şey olacak gibi çok daha pahalı olacaktır.

Son bir ipucu, eğer RS232 ile bir kart bulursanız, ancak 64 GPIO pinleri mevcutsa, bir RS232 - USB adaptörü kullanabilirsiniz, benim için iyi çalışan birkaç tane var. Ancak bu, RS232 arabiriminin hızını sınırlandırır.


3

NI Labview ortamı pahalıdır, ancak ihtiyacınız olanı yapar (aldığınıza bağlı olarak USB, Ethernet veya PCI üzerinden).

Arduino Mega, 60 $ karşılığında sizi yakınlaştıran 54 iğneye sahiptir. Ancak, kutunun dışında bir mantık analizörü değildir; bunu yapmak için bir çizim yazmanız veya bulmanız gerekir. Bir tane olabilir, bilmiyorum. Bu düşük veri yolu hızlarında oldukça basit olmalıdır. Mega'daki her talimat 16MHz'de gerçekleşir, bu yüzden oldukça yavaş bir baud hızına sahip olacaksınız, 115200 baud sinyali alabiliyorsanız şanslı veya çok zeki olacaksınız.

Sonunda, 9600 baud veya 50MHz'de örnekleme yapıyorsanız, bu çok farklı bir projedir. Unutmayın, USB 480 MHz'de çalışır (Teorik olarak, gerçek veri hızınız gecikmeler ve ek yük nedeniyle daha düşük olacaktır), bu nedenle arabelleğe almadan 480/64 = 7.5MHz'den daha iyisini yapamazsınız. Arabelleğe alma ve müstehcen miktarlarda para ile (Aracınızdan daha fazlası), mantık analizörleri gigahertz veri hızlarında size 68, 102 veya 136 kanal alabilir.

Size 8 kanal veren bir araç kullanıp kullanamayacağınızı ciddi bir şekilde anlamaya çalışmanızı ve bunları ayrı ayrı analiz etmeyi öneririm.

EDIT: Aargh, ne düşünüyordum? Böyle düşük oranlarda gidiyorsanız, seri bir bağlantı üzerinde çalışmak kesinlikle gitmenin yoludur. Kullandığım ADAM 4000 iş yerinde zaman tüm Advantech tarafindan modül sistemi; sağlam, kullanımı kolay (bir COM portu üzerinden ASCII protokolüyle kolayca arayüzlenebilir veya birlikte gelen GUI yazılımını kullanabilir), genişletilebilir ve iyi desteklenir. Kendinize 4500 (RS-232, bilgisayarınızda bir USB dönüştürücü veya COM bağlantı noktası (hala varsa)) veya 4501 (katıştırılmış web sunuculu Ethernet) denetleyici kullanın, 4053, 4055 ve 4056 modüllerinden oluşan bir demet bağlayın, ve gitmekte fayda var.


Ah. ama onlar oldukça pahalı .... gibi 100 $ 150 için 150 $ kanalları.
Kevin Vermeer

Yazılımımı test etmek için bir intronix 34 port mantık analiz cihazım var (yani girişleri mikrodenetleyici kontrollü pinlerin çıkışlarına bağlamak). Sanırım yaklaşık 500 $, ama aynı zamanda gerçekten dijital I / O değil mi? Sadece mantığı analiz etmek için özel mantığı programlamak anlamına gelmez. Benimki 500Mhz örnekleme hızında çalışabilir, ancak mikrodenetleyicinin 200Mhz veya daha fazla destek hızlarını kontrol etmesini istemediğim sürece (genellikle onlar değil) genellikle bu hıza ihtiyacım yok. - Her neyse, uzun lafın kısası. Soruyu soran kişinin ihtiyaç duyduğu bir mantık analizörünün olmadığına inanıyorum.
Wouter Simons

Kesinlikle ben, ama O değil. Hayır, yeni bilgi göz önüne alındığında, mantık analizörünün kişinin ihtiyacı olan şey olmadığı konusunda hemfikirim.
Kevin Vermeer

2

Bu şeyin 70 GPIO'su ve 50 $ karşılığında bir USB arayüzü var.


CPU'nuzda çalışan C ++ programlarından pin verilerini okumak ve yazmak için çağrı işlevlerini kullanabilir misiniz?
Faken

NXP'nin bazı I / O tabanlı bir ARM'ye sahip olacağını ve eğer bunlardan sadece I2C IO genişleticilerini tokatlayacak kadar alamadıysanız önerecektim. O şeyin fiyatını yenemezsin ve bu tak ve çalıştır. Harika iş.
akohlsmith

Hiç bir fikrim yok. Sparkfun'un yeni ürünlerinde gördüm.
endolith

2

Evet, UBW32 sizin için iyi çalışıyor gibi görünüyor ve varsayılan bellenim PC'nizdeki yazılımdan G / Ç pimlerini kontrol etmenizi sağlar.

Göre "bir FT232R üzerinde biraz patlama SPI ve paralel arabirimler nasıl" , görünüşe göre FT232R üzerinde bit patlama (belki daha fazla?) 8 dijital pimleri PC'nizde yazılım tarafından kontrol edilebilir.

FT232RL için 15 $ Breakout Kurulu

Gerçekten istediğiniz gibi bir dijital I / O arayüzü gibi geliyor; programlanabilir bir mikro denetleyiciye gerek yoktur. Sadece 16 bit isteseydiniz, birkaç FT232RL kartı ile giderdim. Bununla birlikte, tek bir 40 $ UBW32, size 64 I / O elde etmek için gereken FT232RL kartlarından 8'den daha az maliyetle istediğiniz 64 I / O'yu verecek gibi görünüyor.

Bunun giderek yaygınlaştığını görüyorum - bazen üzerinde hiç kullanmayacağım bir milyon "ekstra" transistör olmasına rağmen, kablolu kablolu bir çözüm kullanmaktan ziyade, tüm mikrodenetleyiciyi bir probleme atmanın maliyeti daha düşüktür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.