Forum: Mikrocontroller und Digitale Elektronik PCF 8591 - Hard- und Software


von Achim S. (achims)


Angehängte Dateien:

Lesenswert?

Hallo Gemeinde
Bei einer Suche im Netz nach dem PCF8591 findet man relativ viele 
Ergebnisse dazu. Leider gibt es mehr Fragen als Antworten dazu.
Innerhalb meines Modularen Systems habe den PCF8591 mit ein 4 Regler 
versorgt und mit einem Programm getestet. Bin richtig erstaunt, wie gut 
das funktioniert.
Verwendet Hardware:

- Platine P59 - PCF8591 mit 4 Einstellregler
- Platine P30 - Board 1 mit dem AT 1284p 16MHz
- Platine D2 - Display 2 mit dem PCF 8574 und Display 4 x 16
- Platine NT2 - Netzteil mit 5V/12V bei 3A

Programm in C mit den Dateien von Peter
Stelle es für alle hier zur Verfügung. Falls was nicht stimmt, bitte ein 
mail an mich.
achim

von Michael U. (amiga)


Lesenswert?

Hallo,

ohne Dir zu nahe treten zu wollen: schön gemacht, nur was soll man mit 
einer Leiterplatte auf der 4 Potis sitzen die man nicht wegjunmpern 
kann, wenn es real nutzen will?
Ein Programm in einem PDF ist gut zum erklären, nur soll man es 
letztlich abtippen?

Oder ist es einfach nur ein wenig Werbung?

Gruß aus Berlin
Michael

von Achim S. (achims)


Lesenswert?

Hallo Michael
es ist keine Werbung. Die 4 Potis sollen nur dazu dienen als erster 
Versuch die Spannung zu ändern. Habe eine weitere Platte fertig, die 
ohne 4 Potis arbeitet und jeweils für 0 bis 10V ausgelegt ist. Kannst 4 
Eingänge von 0 bis 10V anschliessen und einen Ausgang von 0 bis 10V 
nutzen.
Du sollst auch nichtst abtippen. Kann dir sofort die C-Datei schicken, 
kein Problem. Schau es dir an, ob es technisch richtig ist. Ob ich was 
bei der Erklärung falsch gemacht habe oder was vergessen habe.
achim

von Schwätzer (Gast)


Lesenswert?

Achim S. schrieb:
> Leider gibt es mehr Fragen als Antworten dazu.

Was für Fragen. Um den 8591 einzusetzen, braucht man doch nur das 
Datenblatt und einen Microcontroller, das kann auch ein Arduino sein.

von STK500-Besitzer (Gast)


Lesenswert?

Schwätzer schrieb:
> Was für Fragen. Um den 8591 einzusetzen, braucht man doch nur das
> Datenblatt und einen Microcontroller, das kann auch ein Arduino sein.

man = alle, außer Achim Seeger...

von Achim S (Gast)


Angehängte Dateien:

Lesenswert?

War noch ein Fehler drin

von Jojo S. (Gast)


Lesenswert?

Ganz schön viel Aufwand für so ein einfaches Schätzchen... Ein 
Steckbrett und ein paar Drähte hätten es zum Üben doch auch getan.
Aber wenn es eine Arbeit für die Schule war hätte ich dir eine 1 
gegegeben.

von Achim S (Gast)


Lesenswert?

Danke für die 1. Ist keine Arbeit für die Schule, aber für Anfänger und 
besonders für Schüler. Ein paar gute Bilder, eine Platine die geht und 
ein Programm das funktioniert wirkt einfach Wunder für das Verständnis.
Einfaches Schätzchen - da hast du recht. Leider sind gute Tuts im Netz 
recht selten.
achim

von Michael U. (amiga)


Lesenswert?

Hallo,

die deutsche Beschreibung des Controlbytes auf Seite 5 ist unvollständig 
bzw. falsch. Bit 2 schaltet nicht die A/D-Wandlung ein sondern die 
Auto-Inrement-Funktion. Du nutzt diesen ja auch in Deiner Software und 
setzt dazu auch richtg das D/A-Bit (Bit6), Text hier auch falsch.

Hinweise über den Grund dafür bzw. auf das Datenblatt vermisse ich 
völlig.
Auf den Singlemode und dessen Ablauf gehst Du wohl garnicht ein.
Da bekommt nam mit den Read-Cycle nach setzen der Wandlernummer nämlich 
den Wert der vorigen Wandlung mit dem nächsten Read. Man muß also u.U. 
2x lesen um den aktuellen Wert zu erhalten.
Spielt besonders dann eine Rolle, wenn man in großen Abständen wandelt.
Auf Seite 10 Deiner Programmbeschreibung erwähnst Du es in einem 
Kommentar, ohne jede Erklärung.

Wohl 90% der Softwarebeschreibung befasst sich mit Displaydarstellung, 
Formatierung derselben usw. usw., der PCF 8591 ist da nur nebenbei 
Lieferant von ein paar Datenbytes.
Die AD-Wandlung wird wohl garnicht erwähnt, ein Beipiel um z.B. die 
ausgegeben Spannung wieder einzulesen wäre sicher kein Fehler, eine LED 
am DA-Wandler die man dimmen könnte, wie z.B. bei meinem 3€ China-Modul, 
würde für die Nutzer des Demoboards sicher Eindruck machen.
Aber Aout ist ja vorsichtshalber garnicht erst angeschlossen...

Insofern bin ich immer skeptisch bei solchen Tutorials, sie versprechen 
meist viel und halten oft wenig.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@Achim S (Gast)

>Leider sind gute Tuts im Netz recht selten.

So wie gescheite Sätze ohne Denglisch . . .

von Achim S (Gast)


Lesenswert?

Dies Platine hat nicht die Aufgabe einen Wert zu bringen. dadurch ist 
dieser Pin nicht belegt. Sie soll einfach nur Spannung messen.

Michael U. schrieb:
> Wohl 90% der Softwarebeschreibung befasst sich mit Displaydarstellung,
> Formatierung derselben usw. usw., der PCF 8591 ist da nur nebenbei
> Lieferant von ein paar Datenbytes.

Scheint mir ein bischen übertrieben. Es wird auch ein grösserer Anteil 
die Stellung der Zahlen berechnet. Habe es ausführlicher gemacht als 
notwendig. Einige Zeilen kann man zusammenfassen oder abkürzen.

Michael U. schrieb:
> die deutsche Beschreibung des Controlbytes auf Seite 5 ist unvollständig
> bzw. falsch. Bit 2 schaltet nicht die A/D-Wandlung ein sondern die
> Auto-Inrement-Funktion. Du nutzt diesen ja auch in Deiner Software und
> setzt dazu auch richtg das D/A-Bit (Bit6), Text hier auch falsch.

Es ist der Sinn dieser Frage gewesen. Es sollen auch andere das lesen 
und Fehler finden. Möchte nicht andere mit Fachbegriffen oder

Falk B. schrieb:
> gescheite Sätze ohne Denglisch . . .

mit dem Versuch einer Übersetzung erschlagen. Es scheint eine Kunst zu 
sein, komplizierte Zusammenhänge einfach und verständlich zu erklären.
Da ich das Bit falsch erklärt habe, kannst du es mir einfach auf 
deutscher Sprache erklären? Schreibe es gern korrekt rein.
Über den Ablauf der Wandlung möchte ich nichts bringen. Der Anfänger 
wird froh sein, einen korrekten Wert angezeigt zu bekommen und das 
Programm auseinander nehmen um es zu verstehen oder in eigene 
Anwendungen einzubauen. Die Profis brauchen das nicht, die können so was 
schon. Auch Profis haben mal als Anfänger angefangen und waren froh über 
jede Info.
Der Sinn dieser Tuts liegt in der Hilfe für Anfänger.
achim

von Achim S. (achims)


Angehängte Dateien:

Lesenswert?

Habe den zweiten Teil zum PCF 8591 reingestellt.
Auf dieser Platine wird wieder die Spannung gemessen. Diesmal erfolgt 
der Anschluss mit Schraubklemmen, keine Potis, die Eingänge sind für 
0-10V ausgelegt (Spannungsteiler) und der Ausgang ist auch belegt und 
bringt eine Spannung von 0-10V. Es wird eine Referenzspannung von 2,46V 
verwendet. Die Schaltung zu der Sache ist allgemein bekannt. Habe es 
meinem Modularen Board angepasst.
Es läuft fehlerfrei.
Wünsche viel Spass damit
achim

von Klausi (Gast)


Lesenswert?

Hallo
hat jemand Erfahrungen mit den Teilen gemacht?

von Achim S. (achims)


Angehängte Dateien:

Lesenswert?

Hallo
habe die Software zum PCF 8591 fertig geschrieben. Es sind wieder
4 Eingangskanäle mit 0-10V vorhanden. Die Ausgabe erfolgt auf einem 
Graphigdisplay. Habe auch die Berechnung dazu geschrieben
Wünsche viel Spass damit
achim

von Falk B. (falk)


Lesenswert?

@ Achim Seeger (achims)

Hallo Achim, du solltest dich mal noch etwas mehr mit dem Thema 
Funktionen befassen, dann werden dein Hauptprogamme deutlich kürzer und 
übersichtlicher. Und Quelltext sollte man als .c Datei zur Verfügung 
stellen. Sowas aus dem PDF rauskopieren ist Unsinn.

Wenn du einen Kurs (nein, kein Tut!) schreibst, solltest du auch ein 
paar gute Erklärungen liefern.

"Den Korrekturfaktor errechnen wir mit (Berechnet 399, verwendet 398)"

Warum?

?= ????????????????/?^? × ?= ?,?? ? / ??? × ?,??=?,??????? ×?????≈???
"Damit haben wir auch die Auflösung der Spannungsmessung berechnet. 
Diese beträgt bei 2^8 0,0399746 V oder rund 40 mV."

Ich hätte das glatt auf 400 gerundet, was auch mathematisch deutlich 
näherliegend ist. Aber woher kommen die 2,46V? Sollte man da nicht den 
Leuten sagen, daß sie diese Spannung bei IHREM Aufbau messen müssen und 
dadurch eine einfache Kalibrierung durchführen? Woher kommt der Faktor 
4,16?

Mal abgesehen davon, daß man danach immer noch 4 unkalibrierte 
Spannungsteiler in der Meßkette hat.

von Falk B. (falk)


Lesenswert?

hust

float results[5],adc1 ,adc2 ,adc3 ,adc4;

Und du redest von Festkommaarithmetik??

Hmmm . . .

von Achim S. (achims)


Lesenswert?

Hallo Falk
Der Wert 4,16 kommt aus der Rechnung weiter vorn. Ergibt sich aus dem 
Spannungsteiler.
Das Datenblatt des Herstellers gibt einen Vorwiderstand von 2,5 kOhm an. 
Benutze den 2,49 kOhm da er am nächsten ist. Habe den Wert von 2,46 V 
gemessen.
Der Wert von 400 ist gerundet korrekt. Da ich die Spannung von 10V durch 
256 teile ergibt sich dieser Wert.
Da die Widerstände eine relative Abweichung haben, stimmt die Teilung 
nicht exakt. Als Vergleich und zur "kalibrierung" nutze ich 10,00V. K 
mit 400 liegt deutlich über 10V, verwende ich den wert von 398 ist die 
Anzeige 9,99V.
Damit kann der Anzeige Wert eingestellt werden. Ich verwende Widerstände 
mit 1%, Das ist für meine Belange vollkommen ausreichend. Es geht in 
diesem Beitrag besonders um Einheitsspannungen und die Anzeige dazu. Mit 
dem K ist auch ein abkgleich auf andere Spannungen und Bereiche möglich.
Das mit dem c kommt auch gleich, werde das Programm reinstellen, sorry 
hatte ich vergessen.

Falk B. schrieb:
> float results[5],adc1 ,adc2 ,adc3 ,adc4;
>
> Und du redest von Festkommaarithmetik??

Diese Teile stammen von dir und dem genannten Beitrag. Auf meinem 
Notizblock taucht in der Messung kein Komma auf. Habe ich den ori 
Artikel falsch verstanden oder wie meinst du das?
achim

von Achim S. (achims)


Angehängte Dateien:

Lesenswert?

Das fehlende Programm
achim

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

@ Achim Seeger (achims)

>Der Wert 4,16 kommt aus der Rechnung weiter vorn. Ergibt sich aus dem
>Spannungsteiler.

OK, sollte man aber erklären.

>Das Datenblatt des Herstellers gibt einen Vorwiderstand von 2,5 kOhm an.
>Benutze den 2,49 kOhm da er am nächsten ist. Habe den Wert von 2,46 V
>gemessen.

So kritisch ist der nicht, alles im Bereich 1k-5k sollte funktionieren.

>Da die Widerstände eine relative Abweichung haben, stimmt die Teilung
>nicht exakt. Als Vergleich und zur "kalibrierung" nutze ich 10,00V. K
>mit 400 liegt deutlich über 10V, verwende ich den wert von 398 ist die
>Anzeige 9,99V.

Das sollte man genau erklären, damit es die Leute, die ja was lernen 
sollen, auch verstehen.

>Damit kann der Anzeige Wert eingestellt werden. Ich verwende Widerstände
>mit 1%, Das ist für meine Belange vollkommen ausreichend.

Darum geht es nicht. Du willst ja das Thema Kalibrierung in Ansätzen 
erklären. Das geht auch mit 5% Widerständen.

>> float results[5],adc1 ,adc2 ,adc3 ,adc4;
>> Und du redest von Festkommaarithmetik??

>Diese Teile stammen von dir und dem genannten Beitrag.

Ich hab das nur von dir kopiert! Das float hab ich damal wohl übersehen.

> Auf meinem
>Notizblock taucht in der Messung kein Komma auf.

Hä?

> Habe ich den ori
>Artikel falsch verstanden

Wahrscheinlich.

Siehe Anhang, so ist das DEUTLICH brauchbarer ;-)
Ist nicht kompiliert, nur hingeschrieben.

von Achim S. (achims)


Lesenswert?

Hallo Falk
ich habe auf meinem Block die Messung per Hand durchgespielt. Dabei bin 
ich von dem genannten Artikel ausgegangen. Dabei habe ich z.B. mit 10000 
multipliziert und dadurch das Komma rausgerechnet. In der eigentlichen 
Rechnung wird das Komma durch die Variable nicht übernommen, dadurch 
rechne ich nur mit 100.
Die Herkunft von float ist egal, oder könnte aus dem Netz stammen?
Könnten wir das Wort Kalibrierung durch Annäherung ersetzen? Sonst 
besteht die grosse Möglichkeit eine riesige Diskussion anzufangen.
Dein Programm werde ich gleich mal ansehen und probieren.
Mach es zu Anfang immer recht ausführlich. Die Berechnungen sind 
teilweise nicht so einfach zu verstehen. Jetzt habe ich es ein paar mal 
gemacht und verstehe es weitaus besser.
achim

von Falk B. (falk)


Lesenswert?

@Achim Seeger (achims)

>ich habe auf meinem Block die Messung per Hand durchgespielt. Dabei bin
>ich von dem genannten Artikel ausgegangen. Dabei habe ich z.B. mit 10000
>multipliziert und dadurch das Komma rausgerechnet. In der eigentlichen
>Rechnung wird das Komma durch die Variable nicht übernommen, dadurch
>rechne ich nur mit 100.

Schon klar!

>Die Herkunft von float ist egal, oder könnte aus dem Netz stammen?

Keine Ahung, DU hast doch den Quelltext erstellt!

>Könnten wir das Wort Kalibrierung durch Annäherung ersetzen?

Nö.

> Sonst
>besteht die grosse Möglichkeit eine riesige Diskussion anzufangen.

Warum? Es geht um Kalibierung das kann jeder. Nicht um Eichung, das kann 
und darf nur das Eichamt.

>Mach es zu Anfang immer recht ausführlich. Die Berechnungen sind
>teilweise nicht so einfach zu verstehen.

Welche denn?

von Achim S. (achims)


Lesenswert?

Hallo Falk
es geht z.B. um Modulo. Hast schon einiges dazu geschrieben. Es war 
vorher Neuland für mich und musst es erst mal begreifen.
Begreiffen ist eins und dann die konkrete Anwendung und Umsetzung, nicht 
zu vregessen, es zu erklären das man es nachvollziehen kann. Brauch 
etwas Zeit dazu.
achim

von Falk B. (falk)


Lesenswert?

Steht alles recht gut erklärt im Artikel Festkommaarithmetik.

von Achim S (Gast)


Lesenswert?

Hallo Falk
habe das Programm aufgespielt. Leider ging es nicht früher, da sich eine 
Festplatte in den Computerhimmel begeben hat.
Sind einiges Sachen anders bzw. ergibt Fehlermeldungen. Ein Teil konnte 
ich bereinigen. Leider stimmt was an deiner Rechnung nicht. Es kommen 
irgendwelche Sonderzeichen zustnade. Vielleicht auch die Puts 
Anweisungen. Ansiônsten gefällt mir das Programm sehr gut. Ist deutlich 
kürzer als meins. Muss mich noch durchfinden.
achim

von Falk B. (falk)


Lesenswert?

@  Achim S (Gast)

>Sind einiges Sachen anders bzw. ergibt Fehlermeldungen.

Verständlich, ich hab das einfach im Editor geschrieben und nicht 
compiliert, u.a. weil ich nicht alle Quellen von dir habe.

>Ein Teil konnte
>ich bereinigen. Leider stimmt was an deiner Rechnung nicht.

Hmm.

> Es kommen
>irgendwelche Sonderzeichen zustnade.

Das sollte nicht sein.

> Vielleicht auch die Puts
>Anweisungen. Ansiônsten gefällt mir das Programm sehr gut.

Schön. ;-)

>Ist deutlich kürzer als meins.

Vor allem übersichtlicher!

> Muss mich noch durchfinden.

Poste das aktuelle Programm und einen Screenshot, dann kann man dir 
helfen.

von Achim S (Gast)


Lesenswert?

Hallo Falk
mache ic, muss nur noch ein paar Programme überreden wieder zu laufen. 
Stenn sich noch recht bockig an.
achim

von Achim S. (achims)


Angehängte Dateien:

Lesenswert?

Hallo
habe die Software zum PCF 8591 und meinem Modularen System weiter 
geschrieben. Mit der Hardware kann ich jetzt:

- Taster entprellen
- Spannung 0 bis 10V ausgeben
- Anzeige der Ausgabe erfolgt auf einem I2C Display
- Verbindung der Module über I2C
- mit Tastern kann ich die Spannung von 0 bis 10V einstellen und 
Anzeigen
- Begrenzung und Einstellung möglich

Am besten mal ansehen.
Hoffe das ich das richtige angehängt habe.
achim

von Achim S. (achims)


Angehängte Dateien:

Lesenswert?

Habe wahrscheinlich nicht das richtige genommen, versuche wir noch mal

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.