Forum: Projekte & Code 2x3 LED Strom Spannung einfache Kalibrierung Justierung per Software - ATmega8 Assembler


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernhard S. (bernhard)


Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Ein kleines Beispiel in Assembler für einen ATmega8, 1MHz,
wie 2x3 7-Segmentanzeigen eine Spannung (grün) und einen Strom 
(rot)anzeigen können.

Zwei Tasten "Menue" und "Enter" ermöglichen schnell und einfach die 
Justierung des Systems, also ohne Potentiometer.

Anzeige Spannung 0.00...2.56V (mV Bereich)
                 2.60...99.9V ( V Bereich)

Anzeige Strom    0.00...9.99A

Der Spannungsteiler für ADC0 bitte so dimensionieren, dass die Spannung 
am ADC0-Pin 2,5V (Referenzsspannung) nicht überschreitet.

Optional kann der PWM-Ausgang für die Steuerung eines Lüfters 
verwendet werden, ab 50°C läuft der Lüfter an, ab 70°C volle Pulle.

Die Kalibrierung bzw. Justierung ist relativ einfach.

1. Spannung von 2V anlegen und "CAL   2u" aufrufen + Enter
  (für mV-Bereich)
2. Spannung von 28V anlegen und "CAL 28u" aufrufen + Enter
  (für V-Bereich)
3. Strom 0 Einstellen und "CAL 0 A" aufrufen + Enter
  (für ev. vorhandenen Offset)
4. Strom 1A Einstellen und "CAL 1 A" aufrufen + Enter
  (für max 1A Strom)

4a. alternativ für größere Ströme
  Strom 2A Einstellen und "CAL 2 A" aufrufen + Enter
  (für max 2A Strom)

Die Ergebnisse werden im EEPROM des ATmega8 abgelegt.

Menueführung :

Menue-0: Anzeige Strom und Spannung
Menue-1: Anzeige Temperatur
Menue-2: Anzeige PWM z.B. für Lüftermotor
Menue-3: "CAL  2u" - Kalibrierung 2V für den mV Bereich
Menue-4: "CAL 28u" - Kalibrierung 28V
Menue-5: "CAL 0 A" - Kalibrierung 0A (Offset)
Menue-6: "CAL 1 A" - Kalibrierung 1A
Menue-7: "CAL 2 A" - Kalibrierung 2A
Menue-8: "A 0 xxx" - ADC0 Wert
Menue-9: "A 1 xxx" - ADC1 Wert
Menue-10:"A 2 xxx" - ADC2 Wert
Menue-11:"A 3 xxx" - ADC3 Wert

Bernhard

Nachtag: Dieses Modul passt gut in ein Gehäuse RND 320-KD3005D,
eigentlich wollte ich mit 4-stelligen Anzeigen arbeiten, jedoch die 
Fenster sind dafür zu klein.

: Bearbeitet durch User
von Max B. (citgo)


Bewertung
1 lesenswert
nicht lesenswert
Sehr cool!
Danke dafür, werde ich bestimmt mal aufbauen!

von MaWin (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Es würde der Ablesbarkeit der Anzeige auch ausserhalb des dunklen 
Bastlerzimmers sicherlich helfen, wenn zumindest die Digit-Leitungen mit 
Transistoren zur Stromverstärkung ausgestattet werden, denn 
(5V-2.1V)/100Ohm=29mA*8=232mA schafft so ein ATmega-Pin nichal wenn man 
es sich vor Weihnachten ganz stark wünscht da hat man die 
Datenblattgrenzwerte ums 12-fache gerissen, aber auch die 
Segmentleitungen, dann könnte man sogar auf 60mA für die ganze 
Helligkeit laut Datenblatt hochgehen. Bei (SOT23 reicht schon) MOSFETs 
bräuchte man nichtmal Basisvorwiderstände. Aber entweder andere 'common 
Anode' Anzeigen oder Änderungen am Programm für invertierte Ausgänge.

Der coole Chinese baut das natürlich mit einem SH79F3212 und spart sich 
Treiber und Vorwiderstände und hätte auch 12bit A/D damit nach dem 
kalibrieren nicht plötzlich bei einigen Werten die Anzeige um 2 springt 
und eine Zahl ausgelassen wird.

Der nutzt auch einen OpAmp damit bei 10A nicht 2.56V Spannungsabfall zu 
26W Verlustwärme am shunt führen und verstärkt lieber um Faktor 10, auch 
invertierend. Nur möglichst einen OpAmp besser als LM358, vielleicht 
LT1013.

von Max B. (citgo)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Es würde der Ablesbarkeit der Anzeige auch ausserhalb des dunklen
> Bastlerzimmers sicherlich helfen, wenn zumindest die Digit-Leitungen mit
> Transistoren zur Stromverstärkung ausgestattet werden

Mh.. stimmt. Ist mir gar nicht aufgefallen, dass hier Transistoren 
fehlen.

Also wenn man da jetzt 4 Transistoren auf die Digit Leitungen setzt dann 
muss man im Programm das Ganze noch invertieren, richtig?

@Bernhard
Könntest du das noch machen?

von MaWin (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Max B. schrieb:
> Also wenn man da jetzt 4 Transistoren auf die Digit Leitungen setzt dann
> muss man im Programm das Ganze noch invertieren, richtig?

Also wenn man nur 6 (nicht 4) Transistoren einsetzt, dann muss das 
Programm nur die Digit-Leitungen invertieren, oder man nimmt 7-Segment 
mit gemeinsamer Anode und muss nur die 8 Segmentleitungen invertieren, 
aber einen Block muss man dann invertieren.

von Max B. (citgo)


Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich meinte 6 Transistoren! Keine Ahnung wie ich auf 4 kam.
Die Segmente haben doch common Anode.

Aber stimmt... Einfacher wäre es doch jeweils 3 Transistoren zu nehmen 
für Spannung/Strom und im Programm zu invertieren.

von A. S. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
MaWin schrieb:
> Es würde der Ablesbarkeit der Anzeige …
> … [viele gute Ratschläge]
> … einen OpAmp besser als LM358, vielleicht LT1013.

Bernhard hat ein simples und gutes Projekt geteilt. Wenn Du ein besseres 
mit weniger Bauteilen hast, dann teile das doch auch. Auf echte Fehler 
hinweisen (Verbindungsfehler im Schaltplan, Typos in der 
Typbezeichnung), OK. Aber an allem rummäkeln ist jetzt kein Ansporn für 
Bernhard, noch mal was geiles zu teilen.

von MaWin (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
A. S. schrieb:
> Wenn Du ein besseres mit weniger Bauteilen hast, dann teile das doch
> auch. Auf echte Fehler hinweisen

PortPins mit 232mA zu beaufschlagen ist ein echter Fehler. Auf der 
Platine wäre Platz genug für  14 Transistoren und den OpAmp, entweder 
siegte hier die Faulheit oder das nicht-Nachdenken. Bessere uC-Auswahl 
wurde auch genannt.

Also was willst du ?

Kevin, das hast du schon ganz toll gemacht, das nächste Mal wird es 
bestimmt noch besser.

von A. S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> PortPins mit 232mA zu beaufschlagen ist ein echter Fehler.

Mit welchen Daten genau hast Du dieses Ströme berechnet? Mit den 
typischen Daten des µC jedenfalls nicht.

kommschon: Für den echten MaWin bist Du zu pedantisch und zu 
theoretisch.

von MaWin (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
A. S. schrieb:
> Mit welchen Daten genau hast Du dieses Ströme berechnet

Ich hatte extra auch für die Denkfaulsten den Rechenweg oben 
hingeschrieben, aber dann kommst du und bist auch noch lesefaul.

Dass der ATmega das nicht schafft, sieht man schon im Photo, die 3 
Segmente der 7 sind potzhell, die 8 der 0. dunkel und die 5 der 5 
halbhell. Aber manchem doppeläugig Blinden fällt das natürlich nicht 
auf.

von Jens M. (schuchkleisser)


Bewertung
2 lesenswert
nicht lesenswert
MaWin schrieb:
> Dass der ATmega das nicht schafft, sieht man schon im Photo, die 3
> Segmente der 7 sind potzhell, die 8 der 0. dunkel und die 5 der 5
> halbhell. Aber manchem doppeläugig Blinden fällt das natürlich nicht
> auf.

Könnte auch am Multiplex liegen?

Bernhard S. schrieb:
> Ein kleines Beispiel in Assembler für einen ATmega8, 1MHz,
> wie 2x3 7-Segmentanzeigen eine Spannung (grün) und einen Strom
> (rot)anzeigen können.

Danke.

von MaWin (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
Jens M. schrieb:
> Könnte auch am Multiplex liegen

Wenn man nicht verstanden hat, wie viel Strom zum Multiplexbetrieb 
notwendig ist, und die Schaltung unterdimensioniert, ist das die Folge 
von Multiplex, ja.

https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1

von kannAllesBesser! (Gast)


Bewertung
-5 lesenswert
nicht lesenswert
Max B. schrieb:
> Sehr cool!
> Danke dafür, werde ich bestimmt mal aufbauen!

nee, werde ich bestimmt nicht, nur pfusch!
schaut euch mal die asm quellen an - ein ahnungsloser der sich mal 
freund, wenn was leuchtet/blinkt.

sw+hw einfach nur schrott!

von A. S. (achs)


Bewertung
2 lesenswert
nicht lesenswert
MaWin schrieb:
> Ich hatte extra auch für die Denkfaulsten den Rechenweg oben
> hingeschrieben, aber dann kommst du und bist auch noch lesefaul.

Ich sehe da nur eine "starke Vereinfachung".

MaWin schrieb:
> (5V-2.1V)/100Ohm=29mA*8=232mA

Du bist also auf meinen Hinweis nicht eingegangen. Gut. Ich mache nicht 
in AVR, darum hab ich mir hier ein Datenblatt geliehen:

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf

Gehen wir mal von 2V für die LEDs aus, 5V Versorgung, gemeinsamer GND 
und 6 Segmente AN. Mit z.B. 11mA pro Segment wären das etwa 1,6V bzw. 
0,3V an den Outputs, 1,1 am Widerstand und 2 an der LED. Passt also.

Bei 2 Segmenten sind es keine 20mA. Also nicht mal ein Faktor 2. Und 
selbst den könnte man relativ einfach per SW eliminieren.

Das ist mal etwas, das jemand, der noch nie gelötet hat innerhalb 
weniger Stunden komplett aufbauen und mit einem Multimeter in Betrieb 
nehmen kann. Mit Bauteilen aus dem Schrott.

Ja, Transistor wären "richtig", aber dann braucht es schon wieder ein 
wenig mehr ... wie war das noch mit Kathode oder wie das hieß, und wo 
ist die bei diesem Transistor ohne erkennbare Beschriftung....

von MaWin (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
A. S. schrieb:
> wie war das noch mit Kathode oder wie das hieß, und wo ist die bei
> diesem Transistor ohne erkennbare Beschriftung....

Wer so ahnungslos durch die Welt tapert, dümmer als Bohnenstroh, sollte 
die Griffel stillhalten, wenn Erwachsene was schreiben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.