mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arduino, LCD und PWM


Autor: Arduinoquest (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe eine Frage zum Arduino mit angeschlossen Display 16x2 über eine 
4bit Ansteuerung. Sowie einer Nutzung des PWM Ausgangs.

Es werden Werte von einem Temperatursensor analog eingelesen und über 
eine Formel in float Temperaturwerte umgewandelt. Dies steuert dann 
einen Analogausgang PWM. Ein Motor wird angesteuert um die Motordrehzahl 
(Lüfter) zu erhöhen


Das Programm funktioniert soweit wenn man die folgenden Befehle 
ausklammert, allerdings ist dann die Motorregelung inaktiv.

//analogWrite(motor, 0); // läuft der Motor nicht,
//analogWrite(motor, Wertint); //fängt der Motor langsam an zu drehen 
und wird immer schneller (je nach Wert und Temperatur),
//analogWrite(motor, 255); //läuft Motor mit höchster Geschwindigkeit,

sobald man das aber wieder einkommentiert, hat das Display 2 Zyklen etwa 
eine korrekte Anzeige, danach wird es mit Hyroglyphen überschrieben.

Kann es sein, das der PWM Timer und das Display zusammen nicht können. 
Benutzt die Funktion Liquidcrystal auch Timer?

Habt ihr eine Idee?

Danke

: Verschoben durch Moderator
Autor: Stefan K. (stefan64)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht wird das Display durch Störimpulse des Motors gestört. Zieh 
mal den Motor ab und lass Dein Programm mit Motorausgabe laufen. Wenn 
Dein Problem danach verschwunden ist, hast Du kein Code-, sondern ein 
elektrisches Problem.

Viele Grüße, Stefan

Autor: Arduinoquest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das können wir ausschließen, da wir den Motor nicht bestromt haben. Wir 
hatten die externe Motorversorgung auch getrennt und aktiv.

Grüße

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe das mal getestet, bei mir wird nichts überschrieben.
Allerdings passte die Displaybelegung nicht.
Habe das umgeändert auf:
LiquidCrystal lcd(12,11,2,3,4,5);
Es könnte ein Problem mit Pin13 sein.

Das ist es auch, ändere nur 13 auf 11.

: Bearbeitet durch User
Autor: Arduinoquest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider bringt das bei uns den selben Effekt. Wir haben auch schon ein 
anderes Display von einem anderen Hersteller eingebaut. Jedoch bringt 
das auch den selben fehlerhaften defekt.

if (temperature <0.0) { //Wenn Temperatur kleiner als 0°C ist,
    //analogWrite(motor, 0); // läuft der Motor nicht,
    analogWrite(LED, 0); // leuchtet die LED nicht,
    digitalWrite(LED1, LOW); //LED aus,
    digitalWrite(LED2, LOW); //LED aus

Hast bestimmt vergessen das analogWrite einzukommentieren ist, falls es 
noch ausgeklammert ist funktioniert es bei uns auch fehlerfrei!!

Autor: grundschüler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bibliotheken wie Arduinio sind gut, wenn sie sicher funktionieren. Tun 
sie
wahrscheinlich auch.

Fehlersuche gestaltet sich aber schwieriger, wenn man den Fehler in 
fremden Libraries suchen muss. Also zwecks Fehlersuche die Funktion 
analogWrite() selbst schreiben und schauen, bei welchem Registerzugriff 
das Problem entsteht.

Auf float-Werte sollte man bei mcus nach Möglichkeit verzichten. Gib die 
Temperaturen als Integer mit 10tel Grad Genauigkeit an. Das ist besser 
als die float-Berechnung.

Autor: Hubert G. (hubertg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Arduinoquest schrieb:
> Hast bestimmt vergessen das analogWrite einzukommentieren ist, falls es
> noch ausgeklammert ist funktioniert es bei uns auch fehlerfrei!!

Nein ist nicht auskommentiert. Die Temperaturanzeige ist unsinnig. Wenn 
ist den A0 auf 3,3V stecke, dann ist die Anzeige 283.01 . Ist aber eine 
andere Baustelle.
Habe die *.ino angehängt wie ich sie geladen habe.

Autor: Arduinoquest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, es geht jetzt!

Wir hatten ein Stör-Problem. Hatten alles auf einem Breadboard aufgebaut 
und dann hat es Störungen eingekoppelt.

Vielen Dank für die perfekte Unterstützung!

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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