Seltsames Verhalten bei Attiny85 und Mosfetschaltung, nicht bei Atmega168PA

Gast #5939445
Lesenswert?

Hallo Forum,

bei meiner Schaltung (siehe Anhang) taucht ein Problem auf, welches ich 
mir nicht erklären kann.

Die gleiche Schaltung hatte ich vorab auf einem Steckbrett mit Atmega 
168PA statt Attiny85 aufgebaut.
Der Code ist ebenfalls der gleiche (abgesehen vom verwendetetn Timer und 
andrem ADC-Pin).

Auf Steckbrett und Atmega168 läuft alles wie es soll.

Bei der Attiny85 Schaltung kommt es leider zu Problemen.

Bsp. soll der N-Mosfet nach einer Aktion für 30 Sekunden abschalten und 
dann wieder einschalten (und damit den P-Typ Schalten), tut er auch, 
Zeit passt. Ab dem Abschaltzeitpunkt soll eine LED für 2 Minuten rot 
blinken. Das tut sie nur beim Atmega168 aufbau. Beim Attiny ist nach 30 
Sekunden Schluss mit blinken (scheinbar sobald der N-Mosfet wieder 
durchgeschaltet wird).

Weiteres Beispiel:
Der N-Mosfet soll bei anlegen der Betriebsspannung an die Schaltung 
sofort schalten und die rote LED hektisch blinken. Tut sie meistens, 
manchmal muss ich die Versorgungsspannung mehrfach abstöpseln und wieder 
dran damit dies passiert.
Auf dem Steckbrett mit Atmega168 klappt alles wie gewünscht.

Scheinbar hat es etwas mit dem Schalten des/der Mosfets zu tun, dass 
dies irgendwie die Register des Tiny85 durcheinander bringt. Aber, 
warum? Und Warum dann nicht auch beim Atmega168.

Tiny und Atmega laufen mit den internen voreingestellten 8Mhz ohne 
CKDIV8.

Nur am Rande: Die im Schaltplan dargestellten 12V sind nur 9V.
Angehängte Dateien:
Gast #5939471
Lesenswert?

Carsten schrieb:

> Scheinbar hat es etwas mit dem Schalten des/der Mosfets zu tun

Eher mit dem, was der MOSFET schaltet...

> dies irgendwie die Register des Tiny85 durcheinander bringt. Aber,
> warum? Und Warum dann nicht auch beim Atmega168.

Mit Tiny85 vs. Mega168 hat das vermutlich nichts zu tun. Eher damit, 
dass halt der Aufbau unterschiedlich ist. Eventuell auch die 
Stromversorgung?
Gast #5939914
Lesenswert?

Den Attiny versuchsweise aufs Steckbrett zu stecken ist leider 
schwierig, da ich den nur in der SMD Version da habe und verwende.

Was ich gerade überlegt habe und versuchen könnte wäre, das 
Port-Register nach jedem Mosfetstart aufs Neue zu initialisieren.

Also DDRB versuchsweise neu initialisieren und schauen ob das Abhilfe 
schafft. Könnte man das so machen oder ist das quatsch?
#5939924
Lesenswert?

Carsten schrieb:
> manchmal muss ich die Versorgungsspannung mehrfach abstöpseln und wieder
> dran damit dies passiert.

Dann enable mal das Brown-Out Reset.
Das einfache Power-On Reset nur mit Zeitglied kann gerne mal 
fehlschlagen, wenn die VCC nicht schnell und monoton von 0V an ansteigt.

Du kannst auch an einem Pin per SW-UART Debugausgaben senden und dann in 
einem Terminalprogramm anzeigen:
Beitrag "Re: ATtiny44 -Software Uart - nur senden"
Gast #5940180
Lesenswert?

Carsten schrieb:
> Der Code ist ebenfalls der gleiche (abgesehen vom verwendetetn Timer und
> andrem ADC-Pin).
Leg mal beide Datenblätter nebeneinander. Teilweise sind die 
Konfigurationsbits für Timer etc. auf unterschiedlichen 
Registeradressen.
Gelegentlich sind auch die möglichen Prescaler der Timer verschieden.

Da reicht es dann nicht, nur den MCU-Typ anzupassen.
Gast #5940185
Lesenswert?

Danke für die Hinweise,

habe damit etwas rumprobiert und festgestellt, dass der Controller 
resetet, sobald der Mosfet durchschaltet (...und damit einen Verbraucher 
schaltet). Scheinbar bricht die Versorgungsspannung kurzitig ein. Leider 
kann ich das mangels Oszilloskop nicht überprüfen.

Bei der Beschaltung des LM7805 hatte ich mich an das Datenblatt von ON 
gehalten (300nF am Eingang und 100nF am Ausgang).

Sollte ich zusätliche Elkos verwenden?
Wenn ja wo? 47µF am Eingang vom LM7805?
Gast #5940199
Lesenswert?

Carsten schrieb:
> Sollte ich zusätliche Elkos verwenden?
> Wenn ja wo? 47µF am Eingang vom LM7805?

Schwer zu sagen, ohne dass wir dein Netzteil und deine Last kennen.

Normalerweise sollte das Netzteil die Last treiben können, ohne beim 
Einschalten abzusacken. Also versuche zuerst ein besseres Netzteil.

Ist die Last kapazitiv? Wenn ja, brauchst du eventuell eine 
Einschaltstrombegrenzung.

Wenn gar nichts geht, könntest du die Stromversorgungen von Last und 
Mikrocontroller separieren. Oder so halb trennen:
1
       1N4001
2

3
12V o-----|>|---+----[5v Regler]-----o 5V
4
                |         |
5
        470µF  ===        |
6
                |         |
7
               GND       GND

Die kleinen Kondensatoren am Spannungsregler sollen natürlich bleiben. 
Der 470µF käme zusätzlich dazu.

Sinn der Sache ist: Wenn die 12V kurz absacken, wird der Mikrocontroller 
aus dem 470µF Elko versorgt. Die Diode verhindert, dass der Kondensator 
auch die Last versorgt (dafür wäre er zu klein).
Gast #5940371
Lesenswert?

Carsten schrieb:

> habe damit etwas rumprobiert und festgestellt, dass der Controller
> resetet, sobald der Mosfet durchschaltet (...und damit einen Verbraucher
> schaltet).

Wie ich vermutete hatte...

> Scheinbar bricht die Versorgungsspannung kurzitig ein. Leider
> kann ich das mangels Oszilloskop nicht überprüfen.

Du hast es im Prinzip überprüft. Der Controller resettet ja 
offensichtlich.

> Bei der Beschaltung des LM7805 hatte ich mich an das Datenblatt von ON
> gehalten (300nF am Eingang und 100nF am Ausgang).
>
> Sollte ich zusätliche Elkos verwenden?
> Wenn ja wo? 47µF am Eingang vom LM7805?

Die Eignung irgendwelcher Gegenmaßnahmen kann man nur sinnvoll 
abschätzen, wenn man weiss, was da genau geschaltet wird. Du hättest 
einfach mal meine Fragen beantworten sollen!
#5940600
Lesenswert?

Bernd schrieb:
> Leg mal beide Datenblätter nebeneinander. Teilweise sind die
> Konfigurationsbits für Timer etc. auf unterschiedlichen
> Registeradressen.
> Gelegentlich sind auch die möglichen Prescaler der Timer verschieden.
>
> Da reicht es dann nicht, nur den MCU-Typ anzupassen.

Habe ich schon geschrieben, dass der ATmega und der Tiny teilweise 
völlig anders programmiert werden, im Bereich der Register.
Deshalb nehme ich auch den Tiny10, weil die Programmierung da gleich 
ist.
So kann ich das bequem auf einem Arduino testen, dann nur die Pins um 
schreiben und auf den Tiny braten, auflöten und fertig.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren