Guten Mittag, ich wollte gerne einen DHT22/AM2302 Temp+Hygro-Sensor per V-USB an USB adaptieren. V-USB ist kein Problem, das läuft auf der USBASP-Hardware (Billig AVR-Programmer für 3EUR) fast out-of-the-box. Was ich mich jetzt frage ist, wie man sicherstellen kann, dass man das Timing des Sensors einhält. Er ist ja asynchron und schickt die Bits in Form von kurzen und langen Impulsen (sowas 30-80µs jeweils) zum AVR. V-USB verwendet Interrupts, die um die 100µs dauern können. Ich vermute, da könnten mit Bits verloren gehen oder die Länge falsch eingelesen werden. Allerdings weiß ich nicht, wie oft USB-Interrupts passieren, da ich mit V-USB vorher noch nicht gearbeitet hab. Wie würdet ihr das Problem lösen? Viele Grüße, Mampf
:
Bearbeitet durch User
Enweder Sensor mit Digitalschnittstelle (z.B. SHT21) oder µC mit echtem USB verwenden. Bei echtem USB muss man nicht so schnell auf die USB Interrupts reagieren.
> Das kleinstmögliche Abfrageintervall beträgt bei Low Speed 10 ms https://de.wikipedia.org/wiki/USB Zwischen diesen Intervallen sollte es möglich sein die Daten vom DHT22 zu holen. Wo kann man die Quellen zum V-USB einsehen?
Hardy schrieb: > Wo kann man die Quellen zum V-USB einsehen? Die gibts hier im Download-Bereich: https://www.obdev.at/products/vusb/index.html Ah oder Git gleich direkt: https://github.com/obdev/v-usb
:
Bearbeitet durch User
Interessante Software :) Suche doch einmal im V-USB Forum und/oder poste deine Frage dort auch. https://forums.obdev.at/viewforum.php?f=8
Noch etwas: Wenn dich der DHT22 zu sehr ärgert, dann solltest du dir den HTU21D anschauen. Der wird am I2C-Bus betrieben und ist damit interruptfreundlicher. http://www.ebay.de/itm/New-HTU21D-Temperature-and-Humidity-Sensor-Module-Development-board-VR-/152003514439
Hardy schrieb: > Noch etwas: Wenn dich der DHT22 zu sehr ärgert, dann solltest du dir den > HTU21D anschauen. Der wird am I2C-Bus betrieben und ist damit > interruptfreundlicher. Ja, der DHT22 ist ein Sch***Ding ... Hatte ihn erst am Raspi hängen, aber seine asynchrone Natur macht mit einem Multitasking-OS nur Probleme Daher dachte ich mir, ich kauf mir für 3,30EUR einen USBASP, modifizier die v-usb-Firmware etwas und flantsch den DHT22 an. Ich hab es jetzt einfach mal ausprobiert und weniger analysiert ... Pragmatischer Ansatz ;-) Hab einen DHT22-Auslese-Code in die Main-Loop unter dem "UsbLoop()" gesetzt und voila es funktioniert ohne Probleme. Problem gelöst :) (Y) Allerdings hab ich mir auch noch SI7021-Sensoren bestellt, die I2C haben ... Das ist mir viel sympathischer :)
... und wenn du an den ATmega eine UART2USB Brücke CH340G "anflanschst" und die Daten am Host dann über einen virtuellen COM-Port einliest? Dann kann das komplette Timing des Controllers dem Sensor gehören, die Kommunikation erledigt der kleine CH340G (und er funktioniert auch unter Windows7 bis Windows10. Unter Linux sogar nativ als ttyUSBx). V-USB habe ich auch ausprobiert und entweder du lässt einen Controller mit 3,3V laufen - hier hatte ich dann schon mal Probleme wenn ich schnelleren Takt als 8MHz haben wollte, siehe auch Datenblatt), oder man "levelt" D+ und D- von USB auf 3,3V mittels Zenerdioden ein. Hier hab ich dann schon bemerkt, dass das ZWINGEND die kleinen Zenerdioden bis 0,25W sein müssen, weil die größeren (ausgemesen) ihre Zenerspannung am USB-Port zu hoch haben (ist also "Fummelei" --- leider). Der CH340G funktioniert problemlos und kostet beim freundlichen Chinesen im 5er Pack keine 2 Euro... Ralph
Ralph S. schrieb: > ... und wenn du an den ATmega eine UART2USB Brücke CH340G "anflanschst" > und die Daten am Host dann über einen virtuellen COM-Port einliest? Da brauch ich ja dann noch ein Bauteil mehr ... > V-USB habe ich auch ausprobiert und entweder du lässt einen Controller > mit 3,3V laufen - hier hatte ich dann schon mal Probleme wenn ich > schnelleren Takt als 8MHz haben wollte, siehe auch Datenblatt), oder man > "levelt" D+ und D- von USB auf 3,3V mittels Zenerdioden ein. Hier hab > ich dann schon bemerkt, dass das ZWINGEND die kleinen Zenerdioden bis > 0,25W sein müssen, weil die größeren (ausgemesen) ihre Zenerspannung am > USB-Port zu hoch haben (ist also "Fummelei" --- leider). Das ist das tolle an den USBASP Programmern ... Die kosten 3,20EUR in der Bucht (geliefert aus Deutschland!) und implementieren quasi das Referenzdesign von V-USB. Ebenfalls mit Z-Dioden und LM1117-3,3 (falls benötigt). > Der CH340G funktioniert problemlos und kostet beim freundlichen Chinesen > im 5er Pack keine 2 Euro... Und man braucht noch einen µC dazu ... Die USBASP haben alles, was man dafür benötigt :)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.