Archiv verlassen und diese Seite im Standarddesign anzeigen : Spannung Messen
Felix H.
20.02.2008, 21:48
Hi,
ich bins mal wieder 8-[ 8-[ 8-[
also ich hab folgendes vor:
ich will zwei ströme und zwei Spannungen mit einem AVR messen. Der kann komplett nur für diese Aufgabe sein und sonst nichts. Die gemessenen Daten sollen auf einem 2-zeiligen Display dargestellt werden.
Ich hab mich schonmal umgeschaut, und heraus gefunden das ich mit den A/D-Wandlern messen kann. Nur leider Peil ich von dem rest wie man die Programmiert, ect. gar nichts :-s :-s :-s
Der erste Strom soll in Ampere gemessen werden. Dabei reicht eine Auflösung von einem Ampere. Es soll bis 50A gemessen und angezeigt werden. Beim zweiten Strom das gleiche, hier wird nur bis 20A Gemessen, die Auflösung kann hier 0,1A Betragen wenn das funktioniert.
Bei den Spannungen jeweils maximal 20V. Auflösung vllt. eine Nachkommastelle.
Die Anzeige auf dem Display soll halt immer im 2 sec. Takt wechseln. Der Gemessene Wert unten und oben ein beliebiger Text.
kann da jemand helfen? ist ja auch kein leichtes Projekt O:)
also ... 20V kannste nicht direkt messen, der ADC geht bis AVCC, also
bis maximal 5 V beim AVR.
Brauchst Du halt nen Spannungsteiler mit Überspannungsschutz.
Spannungsteiler halt 1:3 u.U. mit OP-Verstärker als Impedanzwandler
um Beeinflussung der Messspannung auszuklammern.
Wie hast Du denn die Strommessung geplant?
Felix H.
20.02.2008, 22:20
ja das mit den 5V hab ich auch schon rausgefunden ;-)
den strom wollte ich über spannungsabfall an einem 0,01 Ohm Widerstand messen. Dürfte nicht das Problem sein.
Gruß
Felix H.
20.02.2008, 22:41
was haltet ihr hiervon?
http://www.electronics-lab.com/projects/test/022/
Kann man das eventuell etwas umschreiben? Einfach so das die anzeige auf V und A messung stehen bleibt ohne PWR Tresh ect.
Ich würde davon dann einfach zwei Schaltungen einbauen mit je einem eigenen Display. Vorausgesetzt man kann das umspringen der Anzeige umschreiben. Das Programm ist ja nur als .hex abgelegt. Kann man das irgendwie wieder in den normalen Code umwandeln?
stefan_Z
21.02.2008, 00:41
Dein Problem ist dein Unwissen der analogen Materie. (Geht mir leider meist nicht anders)
Spannung messen ist noch direkt und einfach machbar, beim Strom wirds
kompliziert. Den kann man nur indirekt messen, Stichwort Shunt. Alternativ geht das auch mit Hallsensoren - fertige ICs baut z.B. Allegro.
Felix H.
21.02.2008, 15:06
hm ja... geht mir auch so :-(
kann man das Programm von dem link denn umschreiben? oder wechselt die ansicht nur wenn man auf den knopf drückt? o.O ist leider alles auf englisch
stefan_Z
21.02.2008, 15:22
nee kann man nicht umschreiben, da er einem nur das HEX gibt - also das fertige Flashfile. Scheint eh in C geschrieben zu sein.
Felix H.
21.02.2008, 15:45
hallo, ich hab die ganzen dateien gefunden. Also die Firmware. Kann sie hochladen. Scheint wie du gesagt hast in C geschrieben zu sein. Muss ich mich in die C-Abteilung begeben um geholfen zu bekommen?
stefan_Z
21.02.2008, 16:02
Ah ok.. ich hatte nicht wirklich groß gesucht...
Ja die C-Abteilung wird wohl der richtige Ort sein für den Code.
Hi,
wie wär´s denn mit selber schreiben? Ist ja bei der Aufgabe nicht so schwer. Dann musst dich halt bisle in µc-programmierung einarbeiten. kommst her und sagst ich brauch des, schreibt mal. find ich eigentlich net ok. ich helfe ja auch gerne, aber wenn jemand kommt und sagt macht mal. nur weil er selber zu faul ist sich damit zu beschäftigen, dann hab ich da au kein bock drauf.
mit bascom kann man das problem recht einfach lösen. und da gibt´s ne kostenlose demoversion.
mfg jeffrey
Felix H.
21.02.2008, 18:02
les mal meinen ersten beitrag und du wirst sehen das ich in der tat versucht hab mich damit zu beschäftigen.
Gruß
Also 50A über einem Widerstand messen, das wird spaßig.
Ich habe da jetzt nicht so den Überblick, was es auf dem Markt noch so gibt, aber ich hab auf Anhieb nur Hochlastwiderstände bis 17 Watt gefunden...
Um die nicht zu überschreiten dürfte der Widerstand maximal 0,0068 Ohm groß sein...
Gibts die soo klein?
Zu dem Thema Programm umschreiben...
Also so kompliziert ist dein Projekt ja nun nicht, wenn du dich da kurz einarbeitest ist das eine Sache von ein paar Minuten, da dauert es ja schon länger erstmal den Code von jemand anderem umzukrämpeln!
Außerdem macht es ja auch mehr Spaß, selber was zu entwickeln!
Ich denke wenn du dann noch Probleme hast, wird dir hier im Forum sicherlich weiter geholfen...
Felix H.
21.02.2008, 18:50
Hallo,
ich hab das thema ja darunter gestartet das ich sowas machen will und hilfe benötige... aber irgendwie bekomm ich nur sachen gesagt wie ich das anschließe. Das ist mir ja alles klar mit Spannungsteiler ect. Bin ja kein anfänger in elektronik. Aber einer in sachen Mikroprozessor und deswegen habe ich nach der Software gefragt, ob es irgendwo beispiele oder anregungen gibt.
Gruß
python_rocks
21.02.2008, 19:08
Bin ja kein anfänger in elektronik. Aber einer in sachen Mikroprozessor und deswegen habe ich nach der Software gefragt, ob es irgendwo beispiele oder anregungen gibt.
Hallo Felix H.!
Die Sache ist die: Um so ein Projekt durchführen zu können, musst du dich ein wenig (ein paar Wochen) in die Mikrocontroller-Programmierung mit Bascom-AVR einarbeiten. Das heißt, dass du dir ein Buch, eine Lernplatine und einen "Programmer" kaufen musst. Wenn du die Grundlagen kannst, dann wirst du sehen, dass dieses Projekt gar nicht mal so schwierig umsetzbar ist. Aber ohne diese Grundlagen bist du aufgeschmissen.
Vielleicht hilft dir diese Seite weiter: http://halvar.at/elektronik/mikrocontroller_wie_anfangen/
mfg
Gerold
:-)
Felix H.
21.02.2008, 19:08
hi, hab in einem anderen Thread hier im Forum folgenden Code gefunden:
$regfile = "m8def.dat"
Config Adc = Free , Prescaler = Auto
Start Adc
Dim W As Word
Do
W = Getadc(1) ' Die Spannung kommt am ADC Port 1 rein.
W=W*5000 ' Referenz: 5V
W=W/1024 ' Jetzt haben wird die Spannung, die am Port anliegt in mA
W=W/1 ' der Shunt hat den Wert 1 Ohm, W ist nun der fliessende Strom in mA
' jetzt kann man den Wert z.B. übers LCD ausgeben.
Loop
End
kann man damit schon was anfangen? wenn das gehen würde wäre klasse. Weil hier hab ich schon mal nen anfang ;-) versteh das in dem code nur mit den 1024 nich so ganz^^
Gruß
python_rocks
21.02.2008, 19:32
kann man damit schon was anfangen? wenn das gehen würde wäre klasse. Weil hier hab ich schon mal nen anfang ;-) versteh das in dem code nur mit den 1024 nich so ganz
Hallo Felix H.!
Genau so läuft's. :-)
Der Analog-Digital-Converter (ADC) hat eine Auflösung von 1024.
Das heißt, dass bei 5 Volt die Zahl 1024 zurück gegeben wird. Bei 2,5 Volt wird genau die Hälft, also 512 zurück gegeben.
mfg
Gerold
:-)
Felix H.
21.02.2008, 20:16
aaaaah *klick mach* das hört sich soweit schon ganz gut an :-) In dem Beispiel wird ja das ergebnis im prozessor als "W" abgespeichert. Wir geb ichn das auf dem LCD wieder? Einfach mit dem normalen String
Locate 1 , 1
Lcd "W"
oder hab ich da dann ein W stehen?
Gruß
So hättest du dann da ein W stehen...
Ich glaube Bascom versteht das wenn du
LCD W
schreibst.
Felix H.
21.02.2008, 20:42
guuuut... ich denke so müsste das gehen^^
' Ich versuch mich hier mal an einer Anzeige für meine Solaranlage (inselbetrieb)
' also mit Batterie/wechselrichter ect.
'
' Angezeigt werden sollen Modulspannung und Strom, die daraus resultierende Leistung und
' der Batteriestrom sowie der Laststrom und die daraus resultierende Leistung.
' Zudem noch die Leistung, die gerade entnommen oder gepuffert wird. Also die Differenz
' zwischen ein- und ausgehender Leistung.
'
' Felix Herzberger 2008
'
'
$regfile = "m8def.dat"
$crystal = 1000000
Config Adc = Free , Prescaler = Auto
Start Adc
Dim A1 As Word
Do
A1 = Getadc(0) ' Die Spannung kommt am ADC Port 1 rein.
A1 = A1 * 5000 ' Referenz: 5V
A1 = A1 / 1024 ' Jetzt haben wird die Spannung, die am Port anliegt in mA
A1 = A1 / 0.001 ' der Shunt hat den Wert 0,001 Ohm, A1 ist nun der fliessende Strom in mA
Loop
Dim A2 As Word
Do
A2 = Getadc(1)
A2 = A2 * 5000
A2 = A2 / 1024
A2 = A2 / 0.001
Loop
Dim V1 As Word
Do
V1 = Getadc(2)
V1 = V1 * 5000
V1 = V1 / 1024
V1 = V1 * 5
Loop
Dim V2 As Word
Do
V2 = Getadc(3)
V2 = V2 * 5000
V2 = V2 / 1024
V2 = V2 * 5
Loop
Dim P1 As Word
Do
P1 = V1 * A1
Loop
Dim P2 As Word
Do
P2 = V2 * V1
Loop
Dim D1 As Word
Do
D1 = P1 - P2
Loop
' Ausgerechnet sind die Werte nun und werden auf dem Display dargestellt
Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
Do
Cls 'loesche das LCD Display
Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "Solaranlage" 'String auf Display anzeigen
Waitms 3000
Cls
Waitms 10
Locate 1 , 1
Lcd "Modulspannung:"
Locate 2 , 1
Lcd "V"
Locate 2 , 3
Lcd V1
Waitms 3000
Cls
Waitms 10
Locate 1 , 1
Lcd "Modulstrom:"
Locate 2 , 1
Lcd "A"
Locate 2 , 3
Lcd A1
Waitms 3000
Cls
Waitms 10
Locate 1 , 1
Lcd "Modulleistung:"
Locate 2 , 1
Lcd "W"
Locate 2 , 3
Lcd P1
Waitms 3000
Cls
Waitms 10
Locate 1 , 1
Lcd "Batt. Spannung:"
Locate 2 , 1
Lcd "V"
Locate 2 , 3
Lcd V1
Waitms 3000
Cls
Waitms 10
Locate 1 , 1
Lcd "Laststrom:"
Locate 2 , 1
Lcd "A"
Locate 2 , 3
Lcd A2
Waitms 3000
Cls
Waitms 10
Locate 1 , 1
Lcd "Lastleistung:"
Locate 2 , 1
Lcd "W"
Locate 2 , 3
Lcd P2
Waitms 3000
Cls
Locate 1 , 1
Lcd "Leistungsdifferenz"
Locate 2 , 1
Lcd "P"
Locate 2 , 3
Lcd D1
Waitms 3000
Loop
End
Ich hätte da noch einen Hinweis zum messen großer Ströme, das kann man einfach mit so genannten Strommessmodulen (LEM Module)
machen, die können ohne großen Aufwand 100A messen...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.