Platine und Programm für elektrischen Garagentor-Antrieb

Begonnen von picass, 22.03.2022, 12:52:26 CET

⏪ vorheriges - nächstes ⏩

picass

Das nächste Projekt ist im Entwicklungsstadium. Es handelt sich um die Steuerung eines elektrischen Garagentor-Antriebes (eGA), besonderes Merkmal: die Power kommt aus einem 12-Volt-Autoakku und der hat sie wiederum von einem Solarpanel auf dem Garagendach. Das bislang existierende Fertigprodukt will nicht mehr! Während der Entwicklung eines Neuen wird es immer wieder Detailfragen geben, die ich gerne in diesem Fred unterbringen würde, egal, ob es um Hardware oder Softwareprobs geht, um nicht gleich die unendliche Fred-Vermehrung zu betreiben. Es würde mich freuen, wenn ihr hier zwischendurch immer mal reinschauen würdet.

Erste Frage: Ist für das erwünscht störungsfreie Arbeiten des PICs eine metallische Abschirmung nötig?
Dagegen:
- in der Anlage des Fertigproduktes des eGA gab es keine. Der darin auch werkelnde PIC war einfach in einem Kunststoffgehäuse untergebracht.
- ,,mein" PIC, ein PIC18F14K22  - is klar, was sonst ? - wird mit Handbremse betrieben, also über den internen LFINTOSC-Oszi mit nur 32 Khz.
- das Ganze wird halt in einer Garage montiert, die nicht mal einen 230-V-Anschluss hat. Direkte Störungen würde ich da nicht erwarten.

Dafür:
-jetzt ihr!
Grüße, picass

PICkel

Also ich würde alle nicht benötigten Eingänge niederohmig, aber kuzschlußfest (330 Ohm?) auf GND legen, die benötigten Input-Pins, wenn möglich, mit R/C-Kombination entstören.
Besser, wenn der geringfügige Mehrverbrauch keine Rolle spielt: freie Pins als OUT deklarieren und unbeschaltet lassen.
Auf jeden Fall, um "Hängen" des PIC zu vermeiden: Watchdog-Timer nutzen!

Gruß
PICkel

picass

#2
Danke für den Ratschlag "niederohmig", aber vergebene Liebesmühe! Aisler war diesmal zu schnell. Gestern gegen 19 Uhr den Entwurf übermittelt, heute morgen um 6 Uhr kam die Nachricht: bereits in Produktion. Knurr......., hätte gerne noch den Durchmesser einiger Vias vergrößert... nix geht mehr. Ist aber Beides kein Prob und damit zum Stichwort"Stromverbrauch keine Rolle".
Wenn der Leerlaufstrom eines Autoakkus nicht über 25 mA, in Grenze auch 50 mA rüber klettert, kann der Akku das in der Regel ab. Ist unwahrscheinlich, dass ein PIC im Schlummer mit seinen als OUT geschalteten Ausgängen diese Hürden reißt! ;D

Zwecks meiner Frage nach Abschirmung: hat sich wohl auch erledigt. Habe eben beim Wühlen in meinen Regalen ein exakt passendes kleines Alugehäuse gefunden. Das werde ich nehmen. Aber weniger wegen der Abschirmung, als vielmehr deswegen, weil man da so praktisch diverse Buchse anmontieren kann.

"Hängen" vermeiden mit Watch-Dog-Timer? Ähm, hatte ich noch nicht, da brauche ich noch ein Kurzinfo zu.

Wer mal einnen Blick auf die Schaltung werfen möchte, bitte sehr: siehe Bilder.
Grüße, picass

Peter

Wie wäre es noch mit einer ISCP Schnittstelle.
Oder nimmst du den Controller immer raus wenn du ihn programmierst ?

PICkel

Zum Thema Watchdog-Timer:
Durch äußere Einflüsse (Spannungseinbruch, elektrostatische Entladung, ...), oder Bedienfehler, Programmfehler u.ä. kann es passieren, dass der PIC in eine Dauerschleife gerät.
Und wenn der PIC nicht mehr reagiert, geht vielleicht auch die Garage nicht mehr auf???

Deshalb gibt es den Watchdog-Timer: Ein Oszillator (LFINTOSC) mit ca. 31kHz arbeitet auf einen Zähler mit Pre- und Postscaler. Läuft der Zähler über, wird der PIC neu gestartet. Das geschieht je nach Einstellung nach spätestens 2,18 Minuten.
Deshalb wird im Programm an geeigneter Stelle zyklisch der Watchdog-Timer vor Ablauf der eingestellten Zeit mit CLRWDT zurückgesetzt und somit ein Neustart vermieden.
Arbeitet das Programm nicht mehr korrekt, erfolgt das Rücksetzen mit CLRWDT nicht mehr und es gibt den Neustart.

Ich habe z.B. eine Gewächshausbelüftung mit PIC12F683 gebaut, die nur mit Solarzellen und Pufferkondensatoren ohne Batterie arbeitet. Bricht die Spannung ein, könnte der PIC "nervös" werden. Die Brown-Out-Detektion wurde aktiviert, und der WDT bietet zusätzlichen Schutz.

Gruß
PICkel


picass

avatar_Peter :Du hast es erahnt. Bei diesem Entwurf hatte ich - anders als bei meinen letzten Platinen - keine Vorsorge fürs Programmieren des eingebauten µC's getroffen. Und konsequenterweise auch die "große" Bauform gewählt. Sollte ein Umprogrammieren fällig werden, ist die Entnahme des µC's die vielfach einfachere Methode - in diesem Fall. Zudem habe ich bei Versuch, die alte Schaltung wieder zu beleben, es schätzen gelernt, an der DIL-Version fix mal 'ne Messspitze ranhalten zu können. Und Platz spielt da auch keine Rolle.

P :Danke für die Ausführung. Das Datenblatt ist komischerweise nicht sehr auskunftsfreudig. Da wird jedes Bit der notwendigen Register erläutert, aber wozu das Ganze, das habe ich dem Blatt nicht entnehmen können.
Du bist aber schon irgendwie sorglos! :o Kaum ist ein Begriff geklärt, wirfst du einen anderen in den Ring, alles so Sachen, die ich bislang praktisch nie genutzt hatte.

Die Aisler-Jungs&Mädels nerven mich gerade! Erst haben sie in Rekordzeit mit der Produktion der Platine begonnen und damit verhindert, dass ein (leichte) Nacharbeit möglich war, und nun kommen sie nicht aus dem Quark, nicht mal die übliche Meldung der Fertigstellung und dem Absenden ist bislang gekommen. Da habe ich den Aufpreis - also quasi das Doppelte - bezahlt, um diesmal fix ans Löten zu kommen, und nu' is nichts mit dem Versprechen der wenigen Arbeitstage.

Grüße, picass

PICkel

#6
Zitat von: picass am 27.03.2022, 10:06:36 CESTSollte ein Umprogrammieren fällig werden, ist die Entnahme des µC's die vielfach einfachere Methode

Ein Tipp dazu:
Die Beine der ICs verbiegen sich gern beim Einstecken oder Herausziehen aus der Fassung:
Stecke während der Testphase den PIC in eine normale IC-Fassung und benutze diese Kombination anstelle des einzelnen PIC. Verbogene/abgebrochene Pins kosten Dich dann nur noch eine neue Fassung und keinen neuen IC.

Zum Thema Watchdog:

https://www.youtube.com/watch?v=EdG2QtoUE9w
Bis etwa zur 4.Minute gibt es eine kompakte Übersicht über die Konfiguration.
(Danach geht's mit C weiter, was ich mir als normaler Mitteleuropäer nicht {mehr} antue.)
Wenn Du Dich damit befassen willst, eine Testplatine und einen Oszillographen hast, kann ich Dir mal ein Demoprogramm senden.

Gruß
PICkel

picass

Zitat von: PICkel am 27.03.2022, 14:01:02 CESTWenn Du Dich damit befassen willst, eine Testplatine und einen Oszillographen hast, kann ich Dir mal ein Demoprogramm senden.
Ja..., ja..., ja..., ja....!

Kuck an! Da ist ja noch einer, welcher einen Bogen um das große "C" schlägt!
Aber dennoch müssen wir längst keine gemeinsame Sache machen, also zumindest beim Programmieren. Hoffe, dein Demo-Prog lesen zu können.

Verdammich, bei Aisler klemmt es. Zwei Tage fürs Blitzboard bezahlt, aber nach 5 Arbeitstagen herrscht dort tiefe Ruhe.
Grüße, picass

PICkel

OK,
derzeit habe ich wegen des guten Wetters mit Brennholz zu tun. Der Heizölpreis lässt grüßen...
Im Laufe der Woche dürfte es dann aber klappen.

Gruß
PICkel

picass

Auch bei mir fordert das schöne Wetter Tribut und deshalb auch jetzt nur ganz kurz und dann auch schon wieder weg:
Die Aisler-Jungs&Mädels haben geliefert und - is klar - innerhalb eines Tages war die Platine auch bestückt, siehe Bild. Das Programmieren hebt dann ab morgen an. Fix wech...
grüße, picass

PICkel

Hallo picass,

hier ist mal ein kleines Prog. (80 Byte) zum Test des Watchdog- Timers (WDT).
Der WDT wird vom LFINTOSC (ca. 31kHz) abgeleitet und hat einen festen Vorteiler von 1:128.
Das ergibt einen Takt von ca. 4ms, der bis max. 1:32768 (ca. 2min) geteilt werden kann.
Im Demo- Beispiel wird 1:16 geteilt, das sind ca. 64ms.
Getestet wurde mit einem PIC18F24K22, der sehr ähnlich zum 18F14K22 ist.
Voreinstellungen: INTOSC mit CLKOUT, WDT Enabled, WDT Postscaler: 1:16.

An CLKOUT (PortA.4 beim P18F14K22) sollte sich das Taktsignal von ca. 7,5kHz messen lassen.
An PORTB.7 wurde das Oszilloskop angeschlossen.

Ablauf anhand des Oszillogramms WDT_Timing.jpg:
1: PORTB.7 = 0   
2: 5ms gewartet, dann PORTB.7 auf 1 zum Triggern des Oszi
3: 10ms geartet, dann zurück auf PORTB.7=0
4: 10ms gewartet, PORTB.7 = 1, WDT zurückgesetzt, warten auf Ansprechen des WDT
5: nach ca. 67ms "schlägt der WDT zu", der PIC wird resettet -> goto 1:
Das Ganze wird also zyklisch wiederholt.

Zur Konfiguration:
Die entsprechenden Config-words habe ich im Compiler voreingestellt:
- INTOSC mit CLKOUT
- WDT ein, Postscaler 1:16
Ich nehme an, Deine Programmierumgebung bietet ebenfalls diese Optionen.

Im ZIP-File findest Du: Programm, Assemblercode und ein HEX-File zum direkten Brennen.

Gruß
PICkel

WDT_Timing.jpg Konfig1.jpg Konfig2.jpg WDT.zip   

picass

Hallo PICkel!
Sehr herzlichen Dank für deine Arbeit und die Entwürfe! Habe alles gesichert und werde es abarbeiten. Erschrecke bitte nicht, wenn dies nicht sofort erfolgt. Bin ja gerade angefangen, das Prog für meine Garagentorsteuerung zu schreiben. Das Grundgerüst dafür muss erst stehen. Wenn das soweit gelaufen ist, dann kommen die "Features" dran. Bis dahin bitte ich um Geduld.
Aber wirklich sehr schöne Arbeit, sieht echt toll aus!
Grüße, picass

picass

#12
Das Grundgerüst für mein Programm "Garagentor-Steuerung".........!!! Soll ich jetzt fluchen..? Oder viel fluchen? Oder inflationär fluchen? Oder was? >:(
Mehr als 2 Tage habe ich mit den vermaledeiten Interrupts gekämpft. Hatte ich vormals schon und nun wieder: in der Regel wollte der PIC einfach nicht aus dem Sleep-Modus via IRQ aufwachen. Das Perverse dabei, dass es im Simulator wunderbar klappte!! Nur "in echt" boshafter Weise nicht! :(

Gerade eben gelang es zum ersten Male, dem PIC im "PICkit Low Demo Board" ein Verhalten anzugewöhnen, das man - guter Wille vorausgesetzt - als in etwa berechenbar bezeichen könnte.
Das war voll der Horror und so recht traue ich diesem  komischen Braten nicht. Das Datenblatt ist mit teils nicht dokumentierten, rsp. "ungenauer" Schreibweise nicht immer eine Hilfe, gerne werden dort auch falsche Spuren gelegt.
Welche Flanke wann die PIC18 Interrupt Logic beeinflusst, rsp. bewirkt, ist auch ein wenig bebildertes Rätsel. Nach der Listung für "INTCON2" war ich der Auffassung, dass der IRQ bei fallender Flanke ausgelöst wird. Ja Schiete! Mal so, mal anders, im Moment aber doch wieder bei fallender Flanke.
Mist, das hat mich gaaaaaaanz viel Zeit und Nerven gekostet, und ob das nun wirklich zuverlässig so arbeitet, muss noch veritabel getestet werden.
Grüße, picass

picass

#13
Es ist kalt geworden, dieser Tage. Nebst Schnee kann sich auch Eis ausbilden. Auf solchem bin ich gerade ausgeschleudert: nix is mit der herrlichen, heilen IRQ-Welt!
Das Prog schien den IRQ abzuarbeiten, der Simulator zeigte jedoch ein Fehlverhalten. Dem bin ich nachgegangen, zum 687. Male das Datenblatt strapaziert und glaubte dann, ein Kenner geworden zu sein. Im INTCON Register gibt es das RABIF-Flag, welches einen pin-change - zum Beispiel nach Tastendruck - vermeldet. Das Flag muss in der IRQ-Routine fix gelöscht werden, sonst rotiert so'n armer PIC ggf. immer wieder in diese IRQ-R rein. Und dieses verdammte Flag wollte sich einfach nicht löschen lassen.
Und da gabs im Kleingedruckten den Tip, diesen mismatch zu beseitigen, indem einfach mal unverdächtig PORTA ausgelesen würde, nur so, ohne das weiter zu verwerten. Tatsächlich ließ sich nach diesem Lesen endlich der Löschbefehl ausführen.
Der Simulator wies daraufhin einen völlig ungestörten und vor allem geplanten Ablauf des Progs auf. Ihr ahnt es: nur "in echt" wieder nicht. Nun will der PIC wieder nicht aus dem Schlummer raus. Darf man hier im Forum k...., also sich erbrechen, es wäre mir danach. Bin quasi keinen Millimeter weiter gekommen.
Grüße, picass

PICkel

Hallo picass,

Der PIC zieht mit INTOSC @31kHz bei 25°C und 5V max.:
60uA im Betrieb, 48uA im Sleep.
Überlege mal, welche Selbstentladung Dein Auto-Akku hat und welchen Mindeststrom der Spannungsregler 12V->5V für den PIC ohnehin schon benötigt.
Da kannst Du doch getrost auf den Krampf mit SLEEP verzichten!? Das ist doch nur sinnvoll bei Sparbetrieb mit Knopfzellen.
Sieh lieber zu, dass die Peripherie im Ruhezustand wenig Strom verbraucht.

Und:
Stark vereinfachtes Rechenbeispiel für Garagentüröffner:
4A*1min = 0,06667Ah = 66667uAh entspricht >1000h PIC-Betriebszeit @60uA.
Da lohnt doch der Aufwand mit SLEEP nicht?

Gruß
PICkel

 

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:

2 Beeren und 2 Bananen. Welche Farbe hat die Banane ?:
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau