Hallo zusammen, ich habe einen Luftdrucksensor HP03SA, dessen Spannungsbereich mit 2.2 ..3.6V angegeben ist. Mein ATMega arbeitet jedoch mit 5V (für andere Komponenten wichtig). Kann das trotzdem funktionieren, oder muss ich einen bidirektionalen Pegelwandler benutzen? Vielen Dank im Voraus Wolfgang
Ich weiss ja nicht ob Du zu den empfindsamen Seelen zählst. Daher frage ich mal höflich, ob Du erlaubst, dass man Dir den Rat gibt in das Datenblatt zu schauen?
An den I2C-Leitungen je einen diskreten Pullup nach 3,3V verwenden, dann überlebt der HP03SA. Ob die so erreichten High-Pegel (eben 3,3V) deinem ATMega genügen, weiß das Datenblatt. Falls der ATMega interne Pullups hat, diese an den betreffenden Pins ausschalten. Max
Die bessere Lösung wäre, den Mega auch mit 3,3 Volt zu betreiben. 5V ist out und wirst damit immer wieder genau diese Probleme bekommen. Gerade mit modernen Sensoren und neuen ICs. Die laufen alle mit 3,3 V aber viele davon nicht mit 5V und du bist dann dauernd am Pegelwandeln. Lieber umgekehrt. Die Anzahl der Komponenten mit 5V wird abnehmen. Gerade I2C ist aufgrund der bidirektionalität nicht soo super zum diskreten Pegelwandeln mit Transistoren. Interessant vielleicht die ADUMs für I2C. Sind zwar auch fürs isolieren gedacht, aber das muss man ja nicht so nutzen. Damit lässt sich I2C sehr einfach pegelwandeln. gruß cyblord
:
Bearbeitet durch User
Hallo Wolfgang, ich verwende den Luftdrucksensor BMP085 mit einer Betriebsspannung von 3,3V direkt an einem ATMega 328P mit 5V Betriebsspannung unter Bascom V2.0.7.6 ohne Probleme. Mit zwei 10kOhm Widerständen sind SDA und SCL an der 3,3V-Versorgung des Luftdrucksensors angeschlossen, es entsteht also ein 3,3V-I2C-Bus. Der I2C-Treiber darf aber den Mega nicht dazu veranlassen 5V in den I2C-Bus senden, sondern muss sich wie ein offener Kollektor verhalten. Grus Allu
Schau mal hier vielleicht hilft es ja. Beitrag: I2C TWI HP03S HH10D HYT939 Drucksensor Luftfeuchtesensor Beispiele ATmega8 Assembler unter "Projekte & Code"
Hallo NobbyH, meine Frage zielte auf den Bascom-Code für den BMP085 hin. Trotzdem danke, der Beitrag von Bernhard ist auch interessant. Grelli
Ich will an dieser Stelle mal auf den MPL3115 hinweisen. Der Vorteil gegenüber dem BMP085 / BMP180 ist, dass man keine Berechnungen selbst anstellen muss, vor allem im Bezug auf die Calibration Parameter, der Luftdruck wird direkt ausgegeben. Er hat sogar eine Altimeter-Funktion, welche sofort die Höhe in Meter ausgibt. Eure ganzen Probleme bei der I2C-Ansteuerung von solchen Sensoren kann ich aber nicht nachvollziehen. Die Dinger laufen normalerweise nach 1 Stunde Datenblattlektüre und programmieren zufriedenstellend.
:
Bearbeitet durch User
Ralf-Peter Grellmann schrieb: > kannst Du den Code preisgeben ??? Hallo Grelli, anbei ist der Programmausschnitt zum Drucksensor. Im ganzen Programm ist noch ein Feuchtesensor und anderes eingebunden. Im BMP085-Programm habe ich das Beispiel aus dem Datenblatt in Bascom umgesetzt. Eingebunden ist das BMP085-Bedienprogramm in etwa wie folgt: regfile = "M328pdef.dat" ' _Chip = 60 $crystal = 16000000 Initialisieren mit: Gosub Bmp_init 'Kalibrierwerte aus dem BMP085 laden Messen mit: Gosub Bmp_temperatur_messen Gosub Bmp_druck_messen Gosub Bmp_berechne_temperatur Gosub Bmp_berechne_druck Testanzeige: '(!!!! Temperatur in 10-tel Grad) Locate 2 , 1 Lcd "T:" ; Str(bmp_temperatur) ; " D:" ; Str(bmp_luftdruck) Ich hoffe, Du kannst was davon verwenden. Gruß Alex
Hallo Alex, danke für die superschnelle Antwort. Werde mein Glück mal versuchen. Grelli
Hallo Grelli, gerade habe ich gesehen, dass von den Zeitmessungen noch "Set Test" und "Reset Test" drin steht. Da der Test-Pin in einem anderen Programmteil definiert ist, werden die beiden Zeilen dem Compiler nicht gefallen. Bitte einfach löschen. Gruß Alex
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.