Forum: Mikrocontroller und Digitale Elektronik In Abhängigkeit des PWM-Ergebinses(Spannungsmessung) Relais steuern


von rentner (Gast)


Lesenswert?

Ich versuche mit einem Atmega8515 über PWM eine Spannung zu messen und 
in Abhängigkeit des Ergebnises verschieden Relais zu schalten.
Die PWM läuft soweit jedoch habe ich Probleme dem Controller zu sagen 
was er bei welcher Spannung machen soll.
Das war mein Gedanke:
1
 main1:
2
  sleep ; CPU schlafen legen
3
  nop
4
  sbrs rFlg,0 ; Ready flag Bit 0 abfragen
5
  rjmp main1 ; Nicht ready, schlaf weiter
6
  cbr rFlg,0x01 ; Setze Bit 0 zurück
7
  ;Spannungsvergleiche
8
  mov rmp,rRes ; Kopiere Ergebnis in Universalregister
9
  cpi R16,0b11000000 ;Spannung1
10
  brne fall1
11
  cpi R16,0b10000000 ;Spannung2
12
  brne fall2
13
  sbis PINB,0 
14
  rcall laden
15
  rjmp main1 ; fertig, schlafen legen
16
fall1:
17
ldi rmp,0b00000111 ;1 und 2 auf und 3 zu
18
out PORTA,rmp
19
rjmp main1
20
21
fall2:
22
ldi rmp,0b00000101 ; 1 auf und 2 und 3 zu
23
out PORTA,rmp
24
rjmp main1
25
26
laden:
27
ldi rmp,0b00001000
28
out PORTA,rmp
29
rjmp main1

kann mir bitte geholfen werden...

von spess53 (Gast)


Lesenswert?

Hi

>Ich versuche mit einem Atmega8515 über PWM eine Spannung zu messen...

Also Spannung erzeugen mit PWM (+RC-Glied) kenne ich. Aber Spannung 
messen, ist mir neu. Solltest du vielleicht mal erläutern.

MfG Spess

von Rentner U. (rentner)


Lesenswert?

genau, ich erzeuge eine Spannung  über PWM und ein RC-Glied und 
vergleiche sie mit meiner Messspannung (Analogkomparator). In dem die 
Pulsweite verlängert oder verkürzt wird kann ich mich an die 
Messspannung annähern. siehe auch:
http://www.avr-asm-tutorial.net/avr_de/avr_adc500.html

Die habe als Ersatz für die Relais die LEDs meine STK500 genommen um das 
Ergebnis leichter feststellen zu können. LED 3-7 leuchtet, 0,1,2 nicht.

Vielen Dank für die schnelle Antwort.

Gruß Stefan

von Ahem (Gast)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

Der Analogkomperator gibt aber nur 0 oder 1 (je nach > oder <) aus. Also 
solltest du nach Abfrage des AC das Tastverhältnis der PWM 
(OCR-Register) je nach Ergebnis erhöhen oder erniedrigen. Wenn dann ein 
Wechsel des AC erfolgt hast du die Spannung erreicht. Das OCR-Register 
entspricht dann dem Spannungswert.
Da du nur einen Teil deines Codes eingestellt hast, habe ich jetzt 
vielleicht auch offene Türen eingerannt.
Was mir allerdings noch aufgefallen ist: die Vermischung von Symbolen 
(.def ryx..) und z.B. 'cpi R16,0b10000000' kann tödlich sein. Entscheide 
dich für eine Variante. Entweder symbolische Variante oder normale 
Registernamen.

MfG Spess

von rentner (Gast)


Lesenswert?

vielen dank für deine Antwort!

die von dir beschriebene Vorgehensweise habe ich verwendet.
mein problem lieg genauer darin, dass ich in Abhängigkeit des ORC 
ergebnises schlaten möchte. wie evtl in in meinem Code zu erkennen ist 
habe ich 2 Fälle zu unterscheiden. Leider funktioniert meine 
Fallunterscheidung aber nicht...und hier bräuchte ich hilfe!

Gruß

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
Noch kein Account? Hier anmelden.