Hallo Leute:
Anfang:
Port RA0 bekommt poti (10k) wert von 0-5V
daraus wird pwm tastverhältnis von 0-100%
Jetzt habe ich das ganze modifiziert für ein poti, was 0-500Ohm hat (sitzheizungsreglerpoti,nicht austauschbar wegen optik),
also habe ich einen 1k widerstand dazugesetzt, damit der stromfluß durchs poti nicht so hoch wird. (5v:1000ohm=0,005A= maximal 5mA =>maximal 0,025Watt)
(Zur Ergänzung: das Poti hat keinen mittenabgriff,nur 2 kontakte)
[+5v]
I
I
[R=1k]
I
I---------------[R=1k]----RA0/IC Eingang
I
[Poti,0-500Ohm]
I
I
[GND]
Ich gebe also per poti einen wert an RA0 ein, der maximal 1/3 von 5V ist
(spannungsteiler), minimal 0V.
Um das gleiche ergebnis zu haben, muß ich den wert also verdreifachen
Ist der Code so korrekt, dass er den Wert ausliest,
dann 2 mal mit dem selben wert addiert, und dann weitergibt ans PWM ?
-Damit soll er wieder die maximalen 5V=100% PWM machen
Code:
Code:
;Eingangsspannung wandeln
BSF ADCON0, 2 ; ADC starten
loop2
BTFSC ADCON0, 2 ; ist der ADC fertig?
GOTO loop2 ; nein, weiter warten
;Eingangsspannung in work laden
movfw ADRESH ; wert auslesen
addwf ADRESH,0 ; wert verdoppelt, in work speichern
addwf ADRESH,0 ; wert verdreifacht, in work gespeichert
; Wert an PWM2 übergeben
MOVWF CCPR2L ; obere 8 Bit sind PWM
Passt das so?
Multiplizieren direkt geht ja net..
Hoffe ich hab das richtig zusammengebaut..
(funkioniert!)
Dankeschön!
Gute Woche noch!
#########################################
EDIT:
Versuch macht kluch!
also das verdreifachen scheint zu funktionieren.. nur leider passiert genau meine befürchtung:
geht damit über 5V raus, und wieder auf knapp über 0V -was nun ?
irgendwas mit dem flag.. hm mal schaun..
(erledigt)
edit2: so wieder 40minuten später..ich denke ich habs hingekriegt..
erst hat der assembler rumgemault, weil ich Status statt STATUS geschrieben hatte.. da sucht man ewig..
Code ist jetzt:
Code:
;Eingangsspannung wandeln
BSF ADCON0, 2 ; ADC starten
loop2
BTFSC ADCON0, 2 ; ist der ADC fertig?
GOTO loop2 ; nein, weiter warten
;Eingangsspannung in work laden
BCF STATUS,C ; Carry Flag auf 0
movfw ADRESH ; wert auslesen
addwf ADRESH,0 ; wert verdoppelt
addwf ADRESH,0 ; wert verdreifacht
btfsc STATUS,C ; wenn carry flag gesetzt,
movlw D'255' ; dann: wert auf maximum setzen=255=5V=100%
; sonst normal weiter
; Wert an PWM2 übergeben
MOVWF CCPR2L ; obere 8 Bit sind PWM
damit sollte die toleranz erschlagen sein, so kann ich ja bis 2,5V einlesen, ohne das es wieder auf 0% pwm geht.
hmm..
Schön wenn man was selber hinkriegt.
################################################
Zurück zum anderen "Problem"
-wie kann ich denn bei Endwerten von sagen wer mal 230 bis 255 auf dauer "high" setzen, ohne pwm? Damit die Verlustleistung am mosfet durchs schalten wegfällt? (immer an)
-wie geht das bei Endwerten von 0-25, dass er ganz abschaltet = dauernd low, ohne pwm..? (immer aus)
Danke fürs zuhören
wopps-jetzt aber ab ins Bettchen..
Lesezeichen