Archiv verlassen und diese Seite im Standarddesign anzeigen : Spannung messen
Dominik009
08.02.2009, 13:52
Hallo
Ich hoffe ihr könnt mir helfen.
Ich bin recht neu hier und habe seit einiger zeit das rn-control.
Ich programmiere in Bacom.
Ich wollte mir jetzt bald einen Sharp GP2D12 kaufen.
So, nun will ich das wenn der sensor – 1V oder höher an porta.1
Ausgibt das mein atmega32 portD.4 auf low schaltet.
Kann mir da jemand helfen?
Viele liebe Grüße Dominik
ikarus_177
08.02.2009, 15:22
Hi Dominik,
du musst zuerst die Spannung des Sensors über den ADC einlesen, wie das geht, wird prima auf einer Seite im Wiki erklärt. Den gemessenen Spannungswert schreibst du dann einfach in eine Variable, nun wird geprüft, ob diese Variable größer als 1 ist, wenn ja, wird der von dir gewünschte Pin auf log. 0 geschalten, ansonsten nicht.
Viele Grüße
Dominik009
08.02.2009, 18:40
Hi Dominik,
du musst zuerst die Spannung des Sensors über den ADC einlesen, wie das geht, wird prima auf einer Seite im Wiki erklärt. Den gemessenen Spannungswert schreibst du dann einfach in eine Variable, nun wird geprüft, ob diese Variable größer als 1 ist, wenn ja, wird der von dir gewünschte Pin auf log. 0 geschalten, ansonsten nicht.
Viele Grüße
Hallo
nun das mit dem adc verstehe ich ja
Config Porta = Input
For I = 0 To 7
Porta.i = 1
Next I
For I = 0 To 7
Start Adc
Ws = Getadc(i)
Volt = Ws * Ref
aber wie ich das jetzt mit den variablen machen soll ist mir schleierhaft.
Das verstehe ich nicht.
kann mir da jemand vielleicht ein Beispiel geben oder den code ergänzen
oder es mir etwas genauer erklären?
Viele Grüße
Dominik
ikarus_177
08.02.2009, 20:43
Hi,
in deiner Variable 'Volt' steht also dann der Spannungwert, der am angegebenen Channel des ADC gemessen wurde. Überschreitet die Spannung einen bestimmten Wert, soll also eine Aktion ausgeführt werden. In Bascom lässt sich das sehr einfach z.B. so realisieren:
'Hier wird die ADC-Messung durchgeführt, deren Ergebnis schließlich in der Variable 'Volt' liegt
if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben
Beispiele dazu findet man auch in der Bascom - Hilfe.
Viele Grüße
Dominik009
08.02.2009, 20:59
Hi,
in deiner Variable 'Volt' steht also dann der Spannungwert, der am angegebenen Channel des ADC gemessen wurde. Überschreitet die Spannung einen bestimmten Wert, soll also eine Aktion ausgeführt werden. In Bascom lässt sich das sehr einfach z.B. so realisieren:
'Hier wird die ADC-Messung durchgeführt, deren Ergebnis schließlich in der Variable 'Volt' liegt
if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben
Beispiele dazu findet man auch in der Bascom - Hilfe.
Viele Grüße
Hallo
also müsste der gesamte code also so lauten
Config Porta = Input
For I = 0 To 7
Porta.i = 1
Next I
For I = 0 To 7
Start Adc
Ws = Getadc(i)
Volt = Ws * Ref
if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben
gruß und danke für deine hilfe,
Dominik
ikarus_177
08.02.2009, 21:08
Hi,
du willst ja nur die Spannung an PORTA.1 messen (lt. deinem ersten Post).
Der ganze Code würde also ungefähr so aussehen:
Config Porta = Input
Start Adc
Ws = Getadc(1)
Volt = Ws * Ref
if Volt >= 1 then 'if - Bedingung zur Prüfung der Spannung
PORTD.4 = 0 'ist die Spannung größer oder gleich als 1V (also die Bedingung oben erfüllt ist, wird PORTD.4 auf log. 0 gesetzt
else
PORTD.4 = 1 'ist die Bedingung aber falsch (Spannung < 1V) wird der Portpin auf log. 1 gesetzt
endif 'die if-Bedingung muss auch ein Ende haben
Die Variablen müssen halt noch vorher passend definiert werden!
Viele Grüße
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.