www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Benötige euere Hilfe


Autor: Mage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
könnt Ihr mir helfen dieses zu realisieren.
Besitze einen ATMega128 und möchte am Eingang einen Reedkontakt 
anschließen. Wenn dieser betätigt wird, soll der Ausgang für eine genau 
definierte Zeit geschlossen werden z.B. 100ms, egal wie lange der 
Reedkontakt am Eingang geschlossen ist. Optimal wäre auch noch wenn die 
Zeit eingestellt werden könnte vom Betätigen des Reedkontakt bis zum 
aktivieren des Ausgangs. Z.B. ich betätige den Reedkontakt am Eingang 
dann soll eine Verzögerung von 20ms stattfinden bis der Ausgang dann für 
100ms aktiv wird.

Vielen Dank

Autor: ARMer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hierfür gibts natürlich mehrere optionen

(bitte mich nicht zu zerfleischen wenn diese nicht die perfekteste ist 
:))

mit dem kontakt löst du einen interrupt aus - dieser "schließt" den 
ausgang und startet einen Timer. Der Timer erzeugt nach der 
eingestellten Zeit (zB 100ms) einen Überlauf und öffnet den ausgang 
wieder.

hast du einen schaltplan dazu?

Autor: Mage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke
Am liebsten wäre mir, dass nach Betätigen des Eingangs der Ausgang 
zeitverzögert (20ms) aktiviert/geschlossen wird und und nach einer 
bestimmten Zeit (100ms) wieder abfällt/öffnet. Hätte jemand eine Idee, 
wie hiefür ein Code aussehen könnte. Wäre euch sehr dankbar.

Autor: ARMer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier mal etwas pseudo code:

while(1)
{
  if(eingang aktiviert)
  {
    warte(20ms)
    öffne_ausgang()
    warte(100ms)
    schließe_ausgang()
  }
}

Autor: hhmmmm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein ATmega128 ist glaube ich ein bisschen oversized für das Projekt, 
wenn du den grad mal so liegen hast ok aber wenn du noch auf einen 
kleineren Typ umsteigen kannst solltest du dies tun, vorausgesetzt es 
bleibt bei der oben genannten Funktion!!!!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hhmmmm wrote:
> Ein ATmega128 ist glaube ich ein bisschen oversized für das Projekt,

"ein bischen" ist noch stark untertrieben.
Ein ATtiny13 reicht dicke.

Mechanischer Kontakt und externer Interrupt vertragen sich nicht 
(prellen).
Daher nen Timerinterrupt mit 4-fach Abtastung nehmen.
Bei 6ms Abtastintervall hast Du auch gleich 18..24ms Verzögerung.


Peter

Autor: Mage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ich weiß dass ein ATmega128 zu oversized ist. Später werde ich einen 
ATiny13 nehmen.
Auf meinem Testboard ist jedoch ein 128er. Zum testen ideal. Das mit dem 
entprellen hätte ich mit eingebunden. Leider sind meine 
Programmierkenntnisse nicht so gut. Vielleicht kann mir jemand von euch 
helfen einen Code zu schreiben. Wenn wir also den Kontakt entprellen 
dann ist eine Verzögerung eh nicht mehr notwendig. Jetzt bräuchte ich 
nur noch, dass der Ausgang verzögert aktiviert wird. Zudem darf der 
Ausgang auch nicht erneut aktiviert werden, wenn der Eingang noch 
geschlossen ist. Z.B. ich betätige den Eingang 1 Sek. dann darf der 
Ausgang aber trotzdem bloß 100ms geschlossen sein. Wenn der Eingang dann 
abgefallen ist, ist auch der Ausgang = 0. Erst wenn der Eingang dann 
wieder erneut betätigt wird soll der Ausgang = 1 sein.
Wäre sehr dankbar, wenn jemand von euch hierzu einen Code für Bascom 
schreiben könnte und mich unterstützen könnte.
Danke
Gruß Markus

Autor: Tom Ekman (tkon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht noch als Zusatz:
am einfachsten geht's wohl analog mit zwei monostabilen Kippstufen

Autor: ARMer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was hast du den für ein testboard? kannst du davon mal schaltplan oder 
sowas posten?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würd doch da glatt einen NE555 benutzen.

Autor: Mage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde es gerne mit einem attiny umsetzen, da evtl. noch weitere 
Funktionen folgen.
Testboard: Display 3000 
http://www.display3000.com/html/mikrocontroller.html
War mein Einstieg in die uC Welt.
Wär super wenn wir einen Code für mein Vorhaben erstellen könnten.

Gruß Markus

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es auf einem ATTiny13 laufen soll ist es nicht sinnvoll
das auf einem Mega128 zu Programmieren.
Da es sich anbietet einen Timer zu verwenden und der 13'er nur
einen mit 8 Bit hat der 128'er jedoch 8 und 16 Bit-Timer besitzt
ist das Programm nich ohne weiteres übertragbar.

Was spricht gegen einen eigenen Aufbau mit ATTiny13. Den gibt es
auch im DIL-Gehäuse.

gruß hans

Autor: Mage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ist kein Problem, ist in kurzer zeit aufgebaut. Ich bin da flexibel. 
Dachte nur man könnte das Prog. auf dem 128 Testen. Macht aber nix ich 
kann den tiny auch ohne Probleme anschließen.
Wär super Danke

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.