PDA

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:)

Vitis
20.02.2008, 22:15
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.

jeffrey
21.02.2008, 17:46
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ß

zerush
21.02.2008, 18:36
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ß

zerush
21.02.2008, 20:24
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

Neutro
28.02.2008, 20:17
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...