Forum: Mikrocontroller und Digitale Elektronik Benötige euere Hilfe


von Mage (Gast)


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

von ARMer (Gast)


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?

von Mage (Gast)


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.

von ARMer (Gast)


Lesenswert?

hier mal etwas pseudo code:

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

von hhmmmm (Gast)


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!!!!

von Peter D. (peda)


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

von Mage (Gast)


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

von Tom E. (tkon)


Lesenswert?

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

von ARMer (Gast)


Lesenswert?

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

von Sven P. (Gast)


Lesenswert?

Ich würd doch da glatt einen NE555 benutzen.

von Mage (Gast)


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

von hans (Gast)


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

von Mage (Gast)


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

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.