Forum: Analoge Elektronik und Schaltungstechnik PIC Spannung in hex


von Joini2 (Gast)


Lesenswert?

Hallo Leute!

Bin am verzweifeln! Ich muß in nem PIC 16F627A den Komparator 
programmieren... Ich habe 4 LEDs anzusteuern. Betriebsspannung 5 Volt. 
Die erste LED soll bei 1,6V, die zweite bei 2,5V , die dritte bei 3,0V 
und die letzte bei 3,4 Volt leuchten. Das Programm steht, nur weiß ich 
nicht wie ich die Spannungen in hex umrechnen kann..... Hat jemand  Zeit 
mir zu helfen?
Danke!
Joinie

von Thorsten (Gast)


Lesenswert?

Ich behaupte einfachmal, dass das mit nem Komparator nicht geht. Der hat 
nur eine Schwelle.

Sowas sollte mit nem ADC (keine Ahnung ob dein PIC einen hat) gehen. 
Hilfe zur Umrechnung der Hexwerte in Volt oder was auch immer sollte 
dann im Datenblatt stehen

von sechszweisechs (Gast)


Lesenswert?

Das sollte gehen wenn man die Schwelle zyklisch verschiebt. Beginnen wie 
mit dem Bereich. Welcher Zahlenbereich wird auf welchen Spannungsbereich 
abgebildet ?

von Joini2 (Gast)


Lesenswert?

Ist der ADC. Sorry.das Programm läuft. Aber mit den falschen Spannungen 
(in hex) im Programm. Hab beispielsweise 083h für 1,72 Volt. Die 
hex-Angaben muß ich ändern für die o.g. 
Spannungen....hmmm....verzeifel..... N klitzekleienr Tip?

von Johannes M. (johnny-m)


Lesenswert?

Joini2 wrote:
> Bin am verzweifeln! Ich muß in nem PIC 16F627A den Komparator
> programmieren...

> Ist der ADC. Sorry.
Öhhh, der 16F627A hat keinen ADC...

Vielleicht könntest Du mal genau erzählen, was Du machen willst und was 
Du schon gemacht hast!

von Joini2 (Gast)


Lesenswert?

...hmm analoger Eingang PIN 17....

von Severino R. (severino)


Lesenswert?

Joini2 wrote:
> ...hmm analoger Eingang PIN 17....

Analog comparator input

von Joini2 (Gast)


Lesenswert?

Nu denn: Ich nutze den PIC um Lichtstärken zu messen. Je nach 
Lichtstärke am LDR wird ne ensprechende LED angesteuert und leuchtet. 
Also, das ganze Ding funktioniert brauche nur andere Schaltschwellen an 
PIN17 (I/O...als analoger Eingang geschaltet) Im Programm sind diese 
Schaltschwellen hinterlegt...logisch... nu will ich diese 
Schaltschwellen ändern. Diese Schaltschwellen sind immer Bruchteile der 
Versorgungsspannung. Ich hab da also hex 083h für 1,72 Volt und zb 0a7h 
für 1,46 Volt. Ich muß nu die og Spannungen in hex ins Programm 
schreiben. NUR: Wie rechne ich die Spannungen in hex um?

von Severino R. (severino)


Lesenswert?

Schau mal ins Datenbuch, Kapitel 11.1

Da stehen die Formeln:
bit 3-0 VR<3:0>: VREF Value Selection bits 0 ≤ VR <3:0> ≤ 15
When VRR = 1: VREF = (VR<3:0>/ 24) * VDD
When VRR = 0: VREF = 1/4 * VDD + (VR<3:0>/ 32) * VDD

VRR ist bit 5.

Also:
xx0x0011 ergibt 1.72 V
xx1x0111        1.46 V

(jeweils bei VDD=5V).

Alles klar?

(um es vorweg zu nehmen: folgende Spannungen können eingestellt werden:
VRR=0:
0.00
0.21
0.42
0.63
0.83
1.04
1.25
1.46
1.67
1.88
2.08
2.29
2.50
2.71
2.92
3.13

VRR=1:
1.25
1.41
1.56
1.72
1.88
2.03
2.19
2.34
2.50
2.66
2.81
2.97
3.13
3.28
3.44
3.59
)

von Joini2 (Gast)


Lesenswert?

Ja!!! Jippiii! Wir kommen der Sache näher! Ich hab das Programm 
schreiben lassen. Komme aber momentan nicht an die Programmierquelle 
ran... :-(  Ich bin für sowas sorry: zu d..f Deswegen meine 
Verzweiflung! Kannst Du mir die hex Bezeichnungen daneben schreiben? Ist 
sicherlich friemelei... ich weiß.. Ich krieg das sonst echt nicht 
gebacken... bin in dieser Sache reiner Praktiker! Wäre Dir wirklich sehr 
dankbar!!!

von Peter D. (peda)


Lesenswert?

Joini2 wrote:
> Verzweiflung! Kannst Du mir die hex Bezeichnungen daneben schreiben?

Wozu hex?

Jeder Assembler versteht Dezimalzahlen.


Peter

von Johannes M. (johnny-m)


Lesenswert?

Es sind jeweils 16 Werte, für die 4 Bit (eben VR3..0) zur Adressierung 
zur Verfügung stehen. Da sollte es doch wohl keine Schwierigkeiten 
machen, den Zusammenhang zu erahnen...

von Severino R. (severino)


Lesenswert?

Naja, heute ist mein guter Tag...

> Ist sicherlich friemelei...
Überhaupt nicht, kleine Fingerübung in Excel

> bin in dieser Sache reiner Praktiker
In welcher Sache bist Du denn Theoretiker?

Aber bitte: Lerne zu lesen und zu verstehen.

VRR=1:
0.00    0a0h
0.21    0a1h
0.42    0a2h
0.63    ..
0.83
1.04
1.25
1.46
1.67
1.88
2.08
2.29
2.50
2.71
2.92
3.13    0afh

VRR=0:
1.25    080h
1.41    081h
1.56    082h
1.72    ..
1.88
2.03
2.19
2.34
2.50
2.66
2.81
2.97
3.13
3.28
3.44
3.59    08fh

(hatte übrigens VRR 0 und 1 vertauscht)

von Severino R. (severino)


Lesenswert?

Peter Dannegger wrote:

> Wozu hex?
>
> Jeder Assembler versteht Dezimalzahlen.

Er hat den Sourcecode nicht und muss das Hexfile patchen...

> Komme aber momentan nicht an die Programmierquelle ran... :-(

von Joini2 (Gast)


Lesenswert?

Ich hab das ganze Programm. Hat 150,00 Euro gekostet. Ist extra für mich 
geschrieben worden...

Theoretiker bin ich im PIC programmieren...hab mich mal dran versucht 
und bin dann aus lauter Verzweiflung an einen Bekannten gegangen.

Herzlichen Dank Severino! Hast mir echt von nem Nervenzusammenbruch 
gerettet...lol

Hier mal die kurze Erklärung die ich vor 2 Monaten bekommen habe. Bin 
dann erst heute wieder dazu gekommen, dran zu arbeiten..:

+++
+++
Die Spannungswerte sind immer Bruchteile der
Versorgungsspannung, also von 5V.
Es gibt zwei Bereiche; die "Zehnerziffer" im Hex gibt den Bereich
an.
Ziffer 8 -> 8/32..23/32
Ziffer a -> 0/24..15/24
Die "Einerzffer" wählt innerhalb des Bereichs.
Beispiel: 83 ->11/32 der Versorgungsspannung -> 1,72V
a7 -> 7/24 -> 1,46V

Schreibweise im Programm:
Groß- oder Kleinbuchstabe ist egal.
Eine Zahl muß immer mit 0..9 beginnen, bei einem Wert in Hex
muß ein h angehängt werden. Deshalb muß bei a7 im Programm
0a7h stehen. 000a7h ginge genauso. Bei 83 kann 83h stehen, oder
auch 083h oder 0000083h (oder 131, das ist der dezimale Wert).

Viele Grüße,
+++
+++

Da steig ich echt nicht durch.... ;-(... Nochmals herzlichen Dank!

von Severino R. (severino)


Lesenswert?

Gern geschehen.

Und gib dem Verfasser der kurzen Erklärung, die Du vor zwei Monaten 
bekommen hast, eine Ohrfeige.

von Master S. (snowman)


Lesenswert?

>> bei einem Wert in Hex muß ein h angehängt werden.
oder je nach kompiler ein '0x' davor anstelle des 'h' danach ...verlang 
den sourcecode, wenn du dafür schon bezahlt hast!

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.