Motoren lösen immer einen Interrupt über einen silberlegierten Taster aus

Gast #1995963
Lesenswert?

Hallo,

Ich habe einen Linienverfolgungs/Funk/Sprach/Objekterkennungs mit 
Display Menü gesteuerten Roboter gebaut.

Ich habe jetzt noch keine Motortreiber raufgemacht, da diese noch nicht 
angekommen sind (2* TLE5205-2). Also wollte ich mal schauen wieviel 
Strom die Motoren ziehen und habe in Serie ein Amperemeter zum Motor und 
vom Motor wieder zum Minuspol der Batterie (In dem Fall des 
Netzgerätes).

Die Cancel Mode Taster Taste ist folgende:
http://www.conrad.at/ce/de/product/701855/VANDGESCH-TASTER-16MM-2A48VDC-RING-BL/SHOP_AREA_17386&promotionareaSearchDetail=005

Mein Problem ist es jetzt wenn ich mit dem Amperemeter zum 
Motoranschluss gehe und ich im Menü schon in irgend einerm Modus bin, so 
wechselt sich der Modus.

Nochmal im Klartext:
Mit dem Roboter lassen sich viele Aufgabenstellungen lösen. Um diese 
auszuwählen muss man jetzt mit den Tasten rauf, runter, ok den Modi 
auswählen.
Jeder Modus besteht aus einer Endlosschleife, die nur unterbrochen 
werden kann wenn die boolsche Variable cancelmode = true ist.

Beispiel:
1
void Linienverfolgung_debugFUNC()
2
{
3
  //Schreibe auf Display kurz welchen Modus:
4
  LCD_Linie_debug;
5

6
  //Enable Timer0
7
  TIMSK0 |= (1<<TOIE0);
8

9
  //Main-Loop:*********************************************************************
10
  while(!cancel_mode)
11
  {
12
  
13
    _delay_ms(50);  //Anzeigezeit
14
    lcd_clear();  //Wieder löschen
15
  }
16
  //back***************************************************************************
17

18
  //Motoren ausschalten
19
  MotorLINKS = 0;
20
  MotorRECHTS = 0;
21
  PWMleft = 0;
22
  PWMright = 0;
23

24
  //Schreibe auf Display Verlassen des aktuellen Modus
25
  LCD_Mode_Verlassen;
26

27
  //Disable Timer0
28
  TIMSK0 &=~ (1<<TOIE0);
29

30
  cancel_mode = false;
31

32
}

Cancelmode wird immer gesetzt wenn der Interupt Int0 ausgelöst wird.
Dieser wird mit Signal() abgefragt und wird durch die Cancelmode Taste 
ausgelöst.

Und beim anlegen einer Spannung am Motor wird Cancelmode gesetzt.

Wenn ich die Tastenverbindung (Bild) vom Roboter jedoch trenne und ich 
in einem Modus drinnen bin, dann löst der Int0 nicht aus wenn ich den 
Motor drehen lasse, sondern nur wenn ich den Tastenverbinder drinnen 
stecken lasse (was ja praktischerweise immer sein soll).

Das kann aber nur bedeuten, dass das Falschsignal über den Taster 
ausgelöst wird.

Meine Frage jetzt: Kann ich den Taster irgendwie abschirmen, damit sich 
keine Störung mehr über ihn übertragen lässt?
Wenn ja wie?
Oder soll ich einfach einen anderen nehmen aus Kunststoff vielleicht?

Bin für allen Rat dankbat
Angehängte Dateien:
Persönliche Seite #1995971
Lesenswert?

RC Glied anbringen zur entstörung oder per software polling und 
entprellung abfragen, dazu gibts genug code in der Codesammlung.
Da wird auf jeden fall irgendwo eine Störung induziert durch die Ströme 
die bei deinem Motor fließen (vermutlich anlaufstrom).

Ein Taster direkt an einen Interrupt ist sowieso nicht zu empfehlen, da 
wenn der Taster prellt der Interrupt gleich mehrfach aufgerufen werden 
kann.
Persönliche Seite #1995977
Lesenswert?

Hauke Radtki schrieb:
> RC Glied anbringen zur entstörung oder per software polling und
> entprellung abfragen, dazu gibts genug code in der Codesammlung.
> Da wird auf jeden fall irgendwo eine Störung induziert durch die Ströme
> die bei deinem Motor fließen (vermutlich anlaufstrom).
>
Finde ich ne sinnvolle Lösung, sollte man immer vorsehen.
Außerdem drauf achten, dass nicht durch Spannungsabfall auf der Masse 
Leitung (Strom des Motors) ein Schalten unmöglich wird.

> Ein Taster direkt an einen Interrupt ist sowieso nicht zu empfehlen, da
> wenn der Taster prellt der Interrupt gleich mehrfach aufgerufen werden
> kann.

Taster am Interrupt geht schon. Wenn der Int auslöst, wird er einfach 
abgeschaltet. Dann eine Timerveriable gesetzt. Die wird im Timer 
decrementiert bis sie null ist. Wenn 0 dann Int wieder zulassen. So wird 
der Taster entprellt.
Gast #1996020
Lesenswert?

Luk4s K. schrieb:
> Wie hochohmig ist dein Pullup-Widerstand?

5k

Bernd Hallinger schrieb:
> Hauke Radtki schrieb:
>> RC Glied anbringen zur entstörung oder per software polling und
>> entprellung abfragen, dazu gibts genug code in der Codesammlung.
>> Da wird auf jeden fall irgendwo eine Störung induziert durch die Ströme
>> die bei deinem Motor fließen (vermutlich anlaufstrom).
>>
> Finde ich ne sinnvolle Lösung, sollte man immer vorsehen.
> Außerdem drauf achten, dass nicht durch Spannungsabfall auf der Masse
> Leitung (Strom des Motors) ein Schalten unmöglich wird.

Also schaut meine ganze Zusatzbeschaltung wie im Bild aus?
Welche Werte empfehlen sich da für Rt und Ct?

Der RC Tiefpass löst aber hier aber das Prellen und die Entstörung 
gleichzeitig oder?

lg andy
Angehängte Dateien:
Gast #1996038
Lesenswert?

Pascal Haury schrieb im Beitrag #1996034:
> Darf ich mal fragen, warum du oben Rechts im Foto (HPIM2330.JPG)
> Leitungen in Wasser gelegt hast??

Das ist kein Wasser.

Hauke Radtki schrieb:
> RC Glied anbringen zur entstörung

Wo genau soll ich den TIefpass reingeben?
Am Motor ist einer drann, und es gibt keinen Grund wieso ich einen 
TIefpass am Int Eingang legen soll wenn ich so recht überlege.

lg andy
Gast #1996059
Lesenswert?

Andy S. schrieb:
> Am Motor ist einer drann, und es gibt keinen Grund wieso ich einen
> TIefpass am Int Eingang legen soll wenn ich so recht überlege.

Genau da soll er aber hin.
Das Problem existiert bei dir, weil du die Tasterkabel über einen 
Gleichstrommotor legst. Dessen Bürstenfeuer sorgt für Störungen in 
umliegenden Leitungen. Deine Tasterleitung ist da ja ideal, da sie recht 
lang und nahe am Motor ist.
:-)
Übrigends solltest du die Leitungen sowieso besser verlegen, so wickelts 
die unter Garantie irgendwann in die Reifen.
Gast #1996072
Lesenswert?

Floh schrieb:
> Genau da soll er aber hin.

Dann müsste ich aber so eine art Invertierer reinmachen weil ich ja 
gegen GND ziehe, dann wird zwar die Elektronik in der Luft hängen aber 
ich versuche es mal. Ja ich hab sowieso hingeschrieben dass sich der 
linke Motor dreht und deswegen habe ich auch die Tasterleitungen nach 
rechts gegeben, damit so wenig Störung wie möglich einkoppelt wird. Aber 
auch diese Entfernung scheint nichts zu helfen.

Danke jedenfalls für die Hilfen, ich werde einmal den RCTiefpass 
reinmachen und berichte.

lg andy
Gast #1996353
Lesenswert?

Luk4s K. schrieb:
> Wie hochohmig ist dein Pullup-Widerstand?

Der interne Pullup ist doch 34,9 kOHM.
Ich habe ihn rausgemessen vom mega644.

Habe jetzt einen 47uF und einen 460 Ohm Widerstand für Ct imd Rt 
genommen, jedoch haut das auch nicht so hin.

Was passiert ist erstmals das selbe rausspringen aus der Schleife und 
zusätzlich warte ich 1,5s nach dem ich die Cancelmode Taste gedrückt 
habe bis das Programm reagiert, irgendwas stimmt danoch nicht so recht 
und ich muss mir das nochmal überlegen.

Denkanstöße sind aber natürlich gewünscht.

lg andy
Gast #1996368
Lesenswert?

Hi

>Der interne Pullup ist doch 34,9 kOHM.
>Ich habe ihn rausgemessen vom mega644.

Ein Blick ins Datenblatt hätte gereicht.

>Habe jetzt einen 47uF und einen 460 Ohm Widerstand für Ct imd Rt
>genommen, jedoch haut das auch nicht so hin.

Die 47µ sind zu gross.

>Was passiert ist erstmals das selbe rausspringen aus der Schleife und
>zusätzlich warte ich 1,5s nach dem ich die Cancelmode Taste gedrückt
>habe bis das Programm reagiert, irgendwas stimmt danoch nicht so recht
>und ich muss mir das nochmal überlegen.

Siehe oben.

Poste doch mal den ganzen Schaltplan.

MfG Spess
Gast #1996381
Lesenswert?

Andy S. schrieb:
> Der Tiefpass befindet sich allerdings beim Taster hinten, da ich nichts
> auf die Platine löten will.

Facepalm
Der Sinn dieses Tiefpasses ist es, die Störungen, die vom Kabel (= 
Antenne) empfangen werden, vom uC-Eingang fernzuhalten. Der bringt halt 
nun mal nichts, wenn er dafür am falschen Ende hockt.
-.-
Gast #1996385
Lesenswert?

Floh schrieb:
> Der Sinn dieses Tiefpasses ist es, die Störungen, die vom Kabel (=
> Antenne) empfangen werden, vom uC-Eingang fernzuhalten. Der bringt halt
> nun mal nichts, wenn er dafür am falschen Ende hockt.

Ich hatte gedacht die Störungen gehen zuerst auf den Taster und von dort 
weiter zum Kabel und dann zum Controller.
Guter Einwand,
Danke!

lg andy
Gast #1996391
Lesenswert?

Hi

>Ich habe das ganze DB durchsucht, aber einen richtigen Wert für die
>Pullups habe ich nicht gefunden.

Electrical Characteristics -> DC Characteristics

RPU I/O Pin Pull-up Resistor 20 50 kΩ

MfG Spess
Gast #1996742
Lesenswert?

Ich werde jetzt einfach eine neue Platine designen mit den fehlenden 
Sachen, da sowieso mehr Fehler drauf sind. Ich weiß halt einfach nicht 
wie ich den Tiefpass da reinmachen soll ohne irgendwie einen Kurzen zu 
verursachen. Es ist einfach zu wenig Platz.

Wie siehts aus mit den Motorleitebahnen?
Kan ich die so lassen oder sollen sie noch dicker werden?

Und passt jetzt der Tiefpass?

lg andy
Angehängte Dateien:
Gast #1997123
Lesenswert?

Kann ich den Tiefpass so mit die 100 Ohm und dem 1k pullup lassen?
Gibt es sonst noch stellen wo ich Filter einbauen sollte?

Die anderen Taster können alle Modis im Betrieb nicht verändern, also 
werde ich darauf verzichten, was könnten noch Fehlerwuellen sein?

lg andy
Gast #1997136
Lesenswert?

Da noch der neue Schaltplan und das Layout. Ich habe den Komparator und 
den Mux rausgeschmissen, dafür verwende ich jetzt den internen 
Komparator und den Atmega644P der 2 Serielle Schnittstellen hat um 
weitere Fehlerquellen auszuschließen.
Die 5 Luftlinien werde ich händisch verbinden müssen.

lg andy
Angehängte Dateien:
#1997139
Lesenswert?

Andy S. schrieb:
> Kann ich den Tiefpass so mit die 100 Ohm und dem 1k pullup lassen?
> Gibt es sonst noch stellen wo ich Filter einbauen sollte?
In der Software, um kurze Impulse zu ignorieren; bzw. Entprellung.
Andy S. schrieb:
> und das Layout.
Soweit ich das dem JPEG-Pixelmuß richtig entnehmen kann kommen sich 
manche Leiterbahnen beträchtlich nahe. z.B. Am Atmega644 unten links. 
Dito unter D1. Die Leiterbanhführung ist überaus ... kreativ; könnte man 
ein wenig aufräumen (entweder nur rund (70er Jahre-Stil) oder 
vollständig 45°/90° Winkel). Eine willkommene Abwechselung zu dem 
eckigen Bauhausstil ist es dennoch allemal, aber über Geschmack lässt 
sich vortrefflich streiten.
Gast #1998384
Lesenswert?

Luk4s K. schrieb:
> Soweit ich das dem JPEG-Pixelmuß richtig entnehmen kann kommen sich
> manche Leiterbahnen beträchtlich nahe. z.B. Am Atmega644 unten links.

ja, stimmt, habe jetzt sowieso alles wieder umändern müssen (Bild) weil 
die Leiterbahnen zu dünn waren.

Ich habe jetzt einen Tiefpass ganz nah an der Platine reingemacht. 
Jedoch bekomme ich immer noch Störungen und zwar die selben. Ct ist 
jetzt 4,7uF und Rt ist 470R. Ich benutze immer noch den internen 34k 
Pullup, da sich das auf der Platine nur schwer ändern lässt.
Es hat den Anschein dass der Tiefpass überhaupt nichts macht. Noch dazu 
kommt jetzt, dass auch wenn ich die Taster rausgebe die Störung 
entsteht. Liegt aber wahrscheinlich daran, dass die Anschlüsse vom 
Kondensator einbisschen rausshauen weil er ja nicht direkt auf der 
Platine drauf ist.
Angehängte Dateien:
#1998401
Lesenswert?

Andy S schrieb:
> da sich das auf der Platine nur schwer ändern lässt.
Einen Widerstand kann man auch auf der Unterseite noch nachträglich 
auflöten, ist zwar unschön, reicht aber zum ausprobieren.
Was die Platine anbetrifft: Mach mal einen DRC, manche Leiterbahnen 
berühren sich sogar... Außerdem scheint mir so, als ob dein 
"Massepolygon" nicht den Namen GND hat; lass mal die EAGLE-Dateien 
rüberwachsen :)
#1998484
Lesenswert?

Andy S schrieb:
> Luk4s K. schrieb:
>> Außerdem scheint mir so, als ob dein
>> "Massepolygon" nicht den Namen GND hat
>
> Soll ja auch nicht mit GND verbunden sein, sondern nur zum Ätzmittel
> sparen.
Mach's dennoch schaden tut's nicht und du sparst nochmals ein wenig mehr 
Ätzmittel, meinetwegen setz' auch die orphans auf on. Wenn du deinen 
Ätzprozess im Griff hast, kannst du die Leiterbahnbreite deutlich 
reduzieren, z.B. auf 24mil, dann entschäft sich vieles. Mit 10mil kommst 
du bequem unter 2 2.54mm Pins durch. Die Abblock-Cs könnten ebenfalls 
noch besser platziert werden. Wenn du diese in einem kleineren Rastermaß 
nimmst, bekommst du sie sogar direkt an die Pins. Alternativ kannst du 
auch SMDs nehmen. 1206 bekommst du bequem neben die Pads. Wenn du die 
Peripherie an den Pins des AVRs geschickter verteilst, lösen sich manche 
langen Luftlinien fast in Wohlgefallen auf bzw. werden deutlich kürzer. 
Drahtbrücken musst du nicht im Schaltplan als solche kennzeichnen; 
einfach beim Routen das Layer wechseln (mittlere Maustaste). Beim 
Drucken blendest du dann das obere Layer aus und lötest die Brücken wie 
gehabt ein.
EDIT:
Andy S schrieb:
> ja, stimmt, habe jetzt sowieso alles wieder umändern müssen (Bild) weil
> die Leiterbahnen zu dünn waren.

weshalb?
Gast #1998540
Lesenswert?

Luk4s K. schrieb:
> meinetwegen setz' auch die orphans auf on.

Was ist das?

Luk4s K. schrieb:
> Wenn du diese in einem kleineren Rastermaß
> nimms

Kann ich theoretisch auch auf 0,635mm gehen?

Luk4s K. schrieb:
> 1206 bekommst du bequem neben die Pads.

Sry, ich bin jetzt nicht der beste elektroniker, das gebe ich zu. Was 
heißt das?

Luk4s K. schrieb:
> Drahtbrücken musst du nicht im Schaltplan als solche kennzeichnen;
> einfach beim Routen das Layer wechseln (mittlere Maustaste). Beim
> Drucken blendest du dann das obere Layer aus und lötest die Brücken wie
> gehabt ein.

Aha, ok gut zu wissen

Luk4s K. schrieb:
> Andy S schrieb:
>> ja, stimmt, habe jetzt sowieso alles wieder umändern müssen (Bild) weil
>> die Leiterbahnen zu dünn waren.
>
> weshalb?

Naja weil das unser Werkstättenlehrer das so gesagt hat.

Danke für die Tipps!

lg andy
#1998561
Lesenswert?

Andy S schrieb:
> Luk4s K. schrieb:
>> meinetwegen setz' auch die orphans auf on.
>
> Was ist das?
EAGLE Hilfe:
1
he po
 in die Kommandozeile von Eagle eingeben; abschnitt Orphans
> Luk4s K. schrieb:
>> Wenn du diese in einem kleineren Rastermaß
>> nimms
>
> Kann ich theoretisch auch auf 0,635mm gehen?
Ich meine Damit das Rastermaß der Abblock-Cs, hier ist dasselbe 
Rastermaß wie vom Atmega sinnvoll.
> Luk4s K. schrieb:
>> 1206 bekommst du bequem neben die Pads.
>
> Sry, ich bin jetzt nicht der beste elektroniker, das gebe ich zu. Was
> heißt das?
1206 ist eine SMD-Baugröße, siehe Wikipedia, zählt dabei noch zu den 
größeren. 0603 lässt sich auch noch relativ gut von Hand verarbeiten.
> Luk4s K. schrieb:
>> Drahtbrücken musst du nicht im Schaltplan als solche kennzeichnen;
>> einfach beim Routen das Layer wechseln (mittlere Maustaste). Beim
>> Drucken blendest du dann das obere Layer aus und lötest die Brücken wie
>> gehabt ein.
>
> Aha, ok gut zu wissen
>
> Luk4s K. schrieb:
>> Andy S schrieb:
>>> ja, stimmt, habe jetzt sowieso alles wieder umändern müssen (Bild) weil
>>> die Leiterbahnen zu dünn waren.
>>
>> weshalb?
>
> Naja weil das unser Werkstättenlehrer das so gesagt hat.
Hmm mit welcher Begründung? Ich denke mal, dass ihr die Platinen selbst 
ätzt. Mit einfachen Mitteln (Tintenstrahldrucker, Plastikfolie und 
UV-Belichter) bekommt man, wenn der Prozess stimmt, auch noch 
3.94mil=0.1mm Leiterbahnen hin. Bei Isolate sollte man allerdings nicht 
sparen. 20mil~0.5mm sollten es mindestens bei SMD sein, bei Bedrahteten 
Bauteilen bin ich mit 32mil~0.8mm gut gefahren. Gutes Gelingen!
> Danke für die Tipps!
Gern geschehen
> lg andy
mfg lukas

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