Cara termudah dan termurah untuk mendapatkan output digital dari komputer ke dunia nyata

8

Saya membutuhkan sejumlah output digital untuk menghubungkan komputer saya ke dunia nyata, namun tampaknya pekerjaan ini tidak semudah yang saya harapkan.

Saya telah melihat ke sejumlah metode yang berbeda, mulai dari kartu I / O digital khusus, pengontrol mikro dengan antarmuka USB, port serial, port paralel, dll. Namun semua solusi tampaknya terlalu mahal, terlalu banyak pekerjaan, atau teknologinya terlalu tua.

Saya berharap ada 64+ output digital yang berjalan di masing-masing sekitar 1khz, dapat dikontrol secara individual. Sejauh ini ide terbaik yang dapat saya buat adalah menempelkan output dari port serial ke serial 8-bit ke register geser paralel dan mengirim karakter ke koneksi serial setiap kali saya ingin mengubah dan output (dijalankan dari USB ke port serial) adaptor). Saya belum menguji ini jadi saya tidak tahu apakah itu akan berhasil.

Apakah ada metode cepat dan kotor lainnya untuk mendapatkan sejumlah besar output digital murah dari komputer yang dapat saya kontrol dengan mudah dengan perintah C ++ yang sangat mendasar?

Faken
sumber
Sudahkah kamu mengerjakan matematika? RS232 non-usb sederhana biasanya memiliki kecepatan maks 115200bps, yaitu sekitar 10KB. Katakanlah setiap saluran hanya membutuhkan 1 byte (yang saya ragu). Anda ingin mengirim 64 x 1000 byte setiap detik yaitu sekitar 64KB. Lebih dari throughput serial Anda. Ada beberapa kabel serial USB berkecepatan tinggi dengan 921600bps, dan meskipun secara teori mungkin saya ragu ini berguna karena ini ada di tepi dan seperti yang saya katakan 1 byte akan cukup kuat, dan pengontrol mikro akan sulit punya waktu untuk hal lain. Anda harus menurunkan permintaan atau menyiapkan dompet Anda.
avra
3
Mungkin Anda harus membaca ulang komentar Anda untuk kesalahan yang jelas sebelum Anda mem-bash seseorang ... GPOI pin bit output bukan byte. Itu berarti 64 kiloBITS / s, jauh di bawah max 115.2kbs
Faken

Jawaban:

7

Sepertinya Anda berniat untuk menyalakan lampu Natal. :-)

Adakah yang salah dengan menggunakan Arduino atau sejenisnya? Akan cukup mudah untuk memperluas jumlah port IO jika jumlah port mengatakan pada mega 1280/2560 tidak cukup. Anda dapat mengendarainya melalui terminal serial / USB. Anda dapat menggunakan register geser pada pin output Arduino atau Anda dapat menggunakan expander port i2c dan berkendara melalui itu.

Menggunakan komponen standar seperti itu akan memberi Anda waktu prototyping paling singkat.

Catatan, cara saya mungkin bukan yang termurah. Tetapi ini efektif dan benar-benar akan membuat Anda berputar dengan cepat.

rampok
sumber
1
Tidak cukup dengan lampu berkedip, saya mencoba mengendalikan 32 motor stepper pada perangkat prototipe universal fixturing otomatis, kecuali saya tidak punya dana ... atau pengetahuan tentang elektronik sama sekali. Mungkin saya mengabaikan mikro controller terlalu cepat, punya sumber daya langkah demi langkah yang baik tentang bagaimana untuk mempercepat dari bawah ke atas dengan contoh-contoh praktis? (Dan maksud saya dari bawah ke atas, saya memiliki basis pengetahuan yang agak aneh yang terlalu teoretis dan tidak cukup praktis, Anda dapat menganggap saya benar-benar tidak tahu apa-apa ... rasanya seperti itu sebagian besar waktu, heh)
Faken
1
Mengontrol motor stepper akan membutuhkan sedikit perhatian ekstra. Anda tidak akan dapat mengendarainya langsung dari pin output mikrokontroler. Anda harus menggunakan 'lem' elektronik di antara pin dan motor agar Anda tidak menggoreng mikro. Seperti apa pun, yang terbaik adalah memulai dari yang kecil dan bekerja sampai ke contoh yang lebih maju. Salah satu penggemar yang lebih bersemangat yang pernah saya lihat di sekitar adalah tronixstuff.wordpress.com memiliki beberapa langkah baik pemula. Saya tahu orang yang menjalankannya juga sering menukar tumpukan ini.
Rob
1
Yup, saya menemukan driver motor stepper yang sangat bagus untuk digunakan di antara sinyal kontrol dan motor (hanya menggunakan 2 input, langkah dan arah). Saya akan melihat melalui tutorial yang Anda tautkan, terima kasih. Btw, hanya untuk memastikan, saya ingin komputer saya yang mengirimkan perintah real time melalui program c ++ ke pengontrol mikro untuk memindahkan motor. Apakah ini mungkin atau sangat mudah dilakukan dengan pengontrol mikro ini?
Faken
1
Tentu saja. Mikrokontroler bertindak sebagai penyangga antara komputer dan papan driver motor stepper. Itu dapat menginterpretasikan perintah yang Anda kirim dan menindakinya serta memberikan umpan balik ke PC jika diperlukan. Manfaat lain dari menggunakan sesuatu yang sedikit konvensional adalah bahwa Anda bisa mendapatkan banyak dukungan / saran dari komunitas, kemungkinan selalu baik bahwa seseorang telah melakukan sesuatu yang serupa. Jadi itu cukup berguna. Mikro hanya menyediakan antarmuka biaya rendah yang sangat bagus antara pc dan papan driver Anda.
Rob
Adafruit membuat papan yang bagus yang bisa digunakan untuk menggerakkan 16 servos, dan mereka bisa dirantai bersama. Akan cukup mudah untuk menulis beberapa kode Arduino yang membaca data dari PC dan kemudian mengirimkannya ke papan driver servo. adafruit.com/products/815
Eric Gunners
3

Register shift serial ke paralel akan berfungsi. Menggunakan port SPI Anda tidak akan memiliki masalah dengan kecepatan pembaruan 1KHz. IIRC pada ATmega328 dengan kristal 8MHz (atau lebih tinggi) Anda harus bisa mendapatkan 1Mbits per detik. Banyak mikrokontroler lain akan berfungsi juga.

Pilihan lain adalah menggunakan beberapa mikrokontroler. Misalnya - menggunakan ATmega328 (yaitu sekitar $ 5 dengan pasif) akan memberi Anda 18 baris sekaligus menjaga garis TXD dan RXD gratis. Paralelkan garis RXD dan kemudian semua UC akan menerima string perintah yang sama. Anda perlu mengurai string perintah pada UC. Gunakan kabel FTDI untuk sampai ke USB. Tambahkan bootloader Arduino ke UC dan Anda bisa menggunakan alat Arduino.

Konversi serial ke paralel lebih lurus ke depan. Jika aplikasi Anda dapat menggunakan keluaran saluran terbuka, Anda bisa menggunakan driver LED 16 saluran. Ini berarti menambahkan empat chip.

jluciani
sumber
1

Pilihan paling sederhana yang saya temui tampaknya adalah IOIO-OTG . Ini adalah perangkat USB OTG eksternal berbasis PIC-controller, dirancang untuk android, tetapi dapat digunakan dengan PC, melalui Eclipse dan Android Development Toolkit. Ini memiliki 46 pin 3.3IO GPIO , serta banyak hal berguna lainnya. Ini tidak memiliki 64 pin yang diperlukan untuk proyek Anda, tetapi Anda bisa menggunakan beberapa register bergeser serial ke paralel, seperti yang disebutkan oleh jluciani (atau menggunakan pengontrol motor stepper, dan menggunakan lebih sedikit pin).

Ada juga papan IO USB berbasis PIC ini , yang melakukan hal serupa, tetapi memiliki pin yang lebih sedikit.

tidak ada apa-apa101
sumber