Möchtest du nicht mehr Antworten ?? :(
Druckbare Version
Möchtest du nicht mehr Antworten ?? :(
Bin erst jetzt wieder online.
Die Nieten sind für Durchkontaktierungen. Die sind von Vorteil, wenn man z.B. Sockel verwendet oder wenn man ICs mit Thermal Pad (Fläche für Kühlung an Unterseite des ICs) verwendet. Ich habe gerade einen L6205 im PowerSO20 Gehäuse verwendet (mit Thermalpad).
Hier ein Foto. Der L6205 ist zwischen der Folientastatur und dem LCD. Das LCD wird noch getauscht, so wird es aber im Prinzip eingebaut. Das LCD und die Tastatur kommen noch weiter weg, damit noch die Netzteilplatine Platz hat (wird stehend montiert).
Ich habe nach dem DRC (Design Rule Check) gefragt da mit aufgefallen ist das zwischen PORTB und ISP 2 Leitungen verbunden sind die du dann beim aktuellen Layout nicht gemacht hast (die Stelle mit dem spitzen Winkel.
Du solltest wichtige Dinge wie Clearance (Abstand) und Leiterbahnbreiten nicht ignorieren. Du solltest auf den Grund gehen warum (falsch eingestellt). Bei niedrigen Spannungen wie z.B. 5V ist das noch egal aber bei hohen Spannungen (z.B. 230V/400V) musst du da schon aufpassen => Kriechstrecken,...
http://www.mikrocontroller.net/artic...erbahnabstände
MfG Hannes
Wofür willst du das Board denn verwenden ??
stimmt ,das habe ich geändert ,da ich sonst einen permanenten Kurzschluss produzieren würde.Zitat:
zwischen PORTB und ISP 2 Leitungen verbunden sind die du dann beim aktuellen Layout nicht gemacht hast (die Stelle mit dem spitzen Winkel.
stimmt auch,ich habe nämlich die Standardeinstellungen beibehalten .Meine Leiterplatte sah aber trotzdem sehr gut aus.Zitat:
Du solltest wichtige Dinge wie Clearance (Abstand) und Leiterbahnbreiten nicht ignorieren. Du solltest auf den Grund gehen warum (falsch eingestellt).
Bis ich mit Fittingslotpaste versucht habe die Leiterplatte zu verzinnen .Entweder habe ich den Moment des Wegnehmens verpasst ,oder es hat sich nichts verzinnt.
Gab es da nicht auc noch was mit Chemisch Zinn ???? Habe es aber leider nirgends gefunden . Weißt du wo es das gibt ??
Und dann habe ich die Leiterplatte auch noch ersaut ,da ich einen zu großen Bohrer verwendet habe und so die Pads zum löten viel zu klein waren .
Also heißt es jetzt für mich ,alles noch mal machen. (Kann auch daran liegen ,dass ich nicht 100 Löcher so toll hinbekommen kann.Vielleicht bau ich mir deswegen noch eine Portalfräse ?? mal schauen .)
Die Platine ist als Ersatz für einen Drehflügelantrieb, bei der die Elektronik defekt ist (kann ich aber nicht reparieren da ich keine Unterlagen habe). So wie hier zu sehen http://www.att-schwarzer.de/produkte_drehtueren.html
Chemisch Zinn weiß ich nicht ob du soetwas bekommst. Wenn du aber unbedingt verzinnen willst würde ich Flussmittel (ich verwende das https://www.distrelec.at/ishopWebFro...dPhrase=952453) verwenden. Du brauchst dann eigentlich nur das Flussmittel auf die Platine geben und mit dem Lötkolben das Lötzinn etwas aufschmelzen und einfach mit dem Lötkolben verteilen. Du darfst aber nur ein wenig Lötzin draufgeben (einen kleinen Lötzinntropfen). Wenn du merkst das es nicht mehr gut geht gibst du wieder etwas Lötzinn dazu. Du solltest das Lötzinn aber wieder entfernen.
Wenn du die Platine planst würde ich empfehlen die Bohrer die du zur Verfügung hast (bei mir zwischen 0,8 und 1,4mm (für größere Löcher habe ich noch normale Bohrer) bei den Rules einzugeben. Wenn du jetzt das Layout auf normales Papier druckst kannst du noch schauen ob alles passt (Pinabstände, Pads groß genug,....). Danach kannst du es noch vergrößern wenn nötig.
Bei den Nieten z.B. musst du noch größere Pads machen da du diese noch verlöten musst/solltest,...
MfG Hannes
Jetzt habe ich auch in einem anderen Thema noch was anderes von dir gelesen.Geht also auch dieser Lötstopplack dafür??
Zum Versiegeln verwendet man normalerweise Lötlack. Dieser Lötlack hat 2 Aufgaben. 1) Die Platine wird vor Oxidation geschützt, da es ein Kunstharz ist und 2) enthällt es Kolophonium (das Flussmittel wie es im Lötzinn vorhanden ist). Dadurch lassen sich die Bauteile leichter verlöten.
Du solltest auf jeden Fall Lötlack verwenden. Zusätzlich habe ich noch einen Kunststoffspray (http://www.reichelt.de/Sprays-fuer-B...b959141594c761), dieser ist aber nur zum Versiegeln und hilft nicht beim Löten (verwendet man z.B. in Korrosiever Umgebung,...)
MfG Hannes
Also könnte ich dieses Kunststoffspray noch über den Lötlack sprühen ??
Soll ich den dann aber nicht lieber nach dem löten der Bauteile auftragen ,da sonst ja die Kontakte zum löten auch versiegelt sind ??
Den Kunststofflack solltest du nur verwenden wenn es unbedingt nötig ist (Platine im Außenbereich, wenn Kondenswasser entsteht,...), ansonsten brauchst du den Spray nicht.
Wenn du ihn verwendest solltest du ihn nach dem Bestücken aufsprühen.
Wenn du also nur auf dem Werktisch,... arbeitest brauchst du ihn nicht (du brauchst nur den Lötlack).
MfG Hannes
Ok,dann nur das.Spare ich mir aber mit dem Lötlack dann das verzinnen. Ja .Weil dann spar ich mir viel Zeit.
Du sparst dir das verzinnen.
MfG Hannes
Dann werde ich mal in den nächsten Tagen die dritte Platine machen .Die kann ich doch auch erst mal ohne diese Spray machen indem ich einfach noch nicht die Platine mit Aceton behandele und dann warte bis ich mal wieder was bestelle??
Wie willst du mit Aceton behandeln? Das ist nur zum Reinigen geeignet aber nicht als Schutz.
MfG Hannes
Also ,ich meine damit ,dass ,wenn ich die Platine geätzt habe ,noch nicht den Fotolack mit dem Aceton entferne ,da ich so verhindere das die CU.-Oberfläche mit Luft in Kontakt kommt ,und ich so warten kann bis ich die Sachen bei Reichelt bestellt habe .
MfG Der Einsteiger
Hallo Leute,
habe heute mal den ersten Test des Armes gemacht ,und festgestellt das es schon recht gut ,sogar ohne spiel,funktioniert.
Doch musste ich in den Pausen Enable immer abdrehen ,da schon einer meiner Motoren 4A zieht und da mein Netzgerät abrauchen würde (wurde schon sehr heiß und war an der Belastungsgrenze). :(
Jetzt muss ich mir erst mal ein großes Netzteil besorgen.
Erst mal "Glückwunsch!"
dann (wenn das Netzteil da ist) - WIR WOLLEN EIN VIDEO!!
Hähä
Ja, OK ,ihr bekommt ja noch euer Video. :)
Jetzt aber erst noch mal ein paar Fragen zum Netzgerät:Kann ich das nehmen (http://www.reichelt.de/Schaltnetztei...2eb2af6e2d5893) ??
Muss ich da nur noch einen Netzstecker mit einem offenen Kabelanschluss dran schrauben ??
Ich habe sicher überlesen welche Schrittmotortreiber Du verwendest -
Sollten es welche mit einstellbarem Strom sein, ist eine höhere Voltzahl besser um die Motoren schneller zu verfahren. Habe selber auch gedacht ein PC Netzteil mit 12V ist OK. Aber viel besser arbeitet meine Schrittmotor Endstufenkombination mit dem 27V Netzteil das ich momentan verwende!
Ich verwende L297-L298 er Treiber.Dann müsste ich aber ein teureres Netzteil kaufen,da eins mit mehr Spannung weniger Strom bereitstellen kann.
Auf meinen Schrittmotoren steht einmal 12 V und einmal bei den Kleinen 2 V drauf. Kann ich dann trotzdem 24 V oder so nehmen ??
Soll ich also lieber dieses kaufen, auch wenn es teurer ist (http://www.reichelt.de/Schaltnetztei...af6e2d5893)???
Das sieht gut aus!
Aber dann natürlich den passenden Strom an den Treibern einstellen!!!
Wieso, den stelle ich zu mindest bei den von Robotikhardware unabhängig von der Spannung ein.Oder ??
Hallo Leute,
heute habe ich mal endlich ein bisschen Zeit für meinen Roboterarm gefunden. Jetzt habe ich auch mal gleich das neue Festspannungsnetzgerät ,was ich mir bestellt hatte ,ausprobiert und :es funktioniert !!!
Jetzt kann ich mich endlich mit dem genauen Positionieren beschäftigen. :) Keine Sorge, das Video kommt dann auch bald.
Doch noch eine Frage zum Netzgerät : Darf ich es auch ohne Last an der Steckdose haben ,oder geht es dann kaputt ????
Und : dürfen die Schrittmotortreiber den Motorstrom bekommen ,auch wenn sie nicht angeschaltet sind ,oder gehen diese dann kaputt ????
P.s. ich würde mich über Antworten sehr freuen ,da ich dann auch schneller weiterkommen würde ...
Hallo, ist noch einer da ???
Sollte dem Netzgerät nichts ausmachen.
Eventuell regelt es erst sauber wenn eine bestimmte Grundlast dran hängt??
Wir wollen das Video!
Wir wollen das Video!!
Wir wollen das Video!!!
Und wie ist es damit ?? :
Zitat:
Und : dürfen die Schrittmotortreiber den Motorstrom bekommen ,auch wenn sie nicht angeschaltet sind ,oder gehen diese dann kaputt ????
Das ist kein Problem -
Manche Treiber mögen es nicht wenn sie bestromt werden und "kein" Schrittmotor ist angeschlossen!
Wenn die Schrittmotortreiber den Motorstrom bekommen, wenn wenn sie ausgeschaltet sind, dann ist irgendwas faul. Normalerweise müssten die Transistoren geschlossen sein, wenn zwar Motorspannung anliegt aber die Steuerung nicht aktiv ist, demnach kann dann auch kein Strom fließen. Die Motoren dürfen aber auch im Stillstand ihren Strom bekommen, dafür wird er ja schließlich geregelt ;)
Also , ich meinte damit , ob es schlimm sei ,wenn die L298-L297 Schrittmotortreiber den Strom vom Motornetzgerät bekommen ,aber nicht an die Logikspannung (5V) angeschlossen sind.
Diese Frage war aber eigentlich ziemlich dumm von mir ,da ich ja wissen müsste ,dass ohne die Logikspannung die Treiber nicht durchschalten können. ](*,)
Ist ja dann doch ein wenig anders - die Problematik.
Es gibt Treiber wo genau diese Vorgehensweise zum sofortigem Tot der Selbigen führt!
Also besser immer erst Logik Spannung dann Motorspannung - zum Auschalten genau andersherum - erst Motorspannung abschalten dann erst die Logikspannung.
gehört da mein Treiber dazu ??Zitat:
Es gibt Treiber wo genau diese Vorgehensweise zum sofortigem Tot der Selbigen führt!
Jetzt endlich was zum Roboterarm : Heute werde ich es vielleicht noch schaffen ein Video zu machen. (Es sind nur zwei Achsen die bis jetzt funktionieren, da ich nur zwei Treiber besitze ,aber wenigstens schon mal etwas).
Stell euch das aber nicht zu schön vor, denn er ist erstens noch lange nicht fertig und zweitens gibt es noch viel zu verbessern.
Doch noch eine Frage zum Programm : Ich möchte nach jedem Start eine Ref-Fahrt machen und habe auch dafür Endschalter angebaut.
Bloß habe ich es noch nicht geschafft ,dass die Motoren dann aufhören zu laufen ,wenn der Schalter berührt wird ???
Woran liegt es??? Verwendet habe ich Pulldown - Widerstände.
Code:$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$swstack = 32
$framesize = 32
Config Portd.7 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.6 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portb.3 = Input 'Endschalter
Config Portb.4 = Input 'Endschalter
Sw1 Alias Portb.3
Sw2 Alias Portb.4
Dim I As Integer
Wait 1
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 5
Portd.3 = 1
Do 'Endschalterposition anfahren
Portd.6 = 0 : Waitus 1 : Portd.6 = 1
Waitms 10
If Sw1 = 1 Then Exit Do
Loop
Portc.3 = 0
Do 'Endschalterposition anfahren
Portc.4 = 0 : Waitus 1 : Portc.4 = 1
Waitms 10
If Sw2 = 1 Then Exit Do
Loop
Do 'Hauptprogramm
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
Loop
End
Anhang 24396 Anhang 24397
Du generierst die Steuerpulse für die Schrittmotoren mit wait-Anweisungen? Zum Testen mag das noch gehen, aber zum anständigen Betrieb würde ich da eher mit Timern arbeiten, dann sind die Schrittzeiten komplett unabhängig vom Hauptprogramm und daher recht stabil. So, wie du es hast, wird zwischen den Schritten die wait-Anweisung ausgeführt, wodurch keine anderen Berechnungen in dieser Zeit möglich sind.
Wegen dem nicht Reagieren auf die Endschalter: schon mal probiert, ob die auch wirklich richtig schalten? Also mal etwas Hardwaredebugging machen: 1-2 LEDs mit Widerstand an einen Ausgang stöpseln und den Zustand der Schaltereingänge dort nochmal ausgeben lassen. Ganz davon ab würde ich die Schleife eher so abbrechen:
Ansonsten müsste der Code aber eigentlich funktionieren, daher tippe ich mal auf einen Verdrahtungsfehler.Code:Do 'Endschalterposition anfahren
Portc.4 = 0 : Waitus 1 : Portc.4 = 1
Waitms 10
Loop Until Sw2 = 1
So, habe es jetzt hin bekommen :
Lag an der Programmierung : If Sw1 = 1 Then Exit DoCode:$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$swstack = 32
$framesize = 32
Config Portd.7 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.6 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Pinb.3 = Input 'Endschalter
Config Pinb.4 = Input 'Endschalter
Sw1 Alias Pinb.3
Sw2 Alias Pinb.4
Waitms 500
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
Portd.3 = 1
Do 'Endschalterposition anfahren
Portd.6 = 0 : Waitus 1 : Portd.6 = 1
Waitms 10
Loop Until Sw1 = 1
Do 'Hauptprogramm
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
Loop
End
Wie willst du das mit Timern realisieren ?? Habe jetzt keine richtigen Vorstellungen davon ,da ich ja noch nicht so lange Progge.
Wäre für einen Lösungsansatz sehr dankbar. :)
Zum Thema Timer:
http://halvar.at/elektronik/kleiner_...timer_counter/
Zum Vorgehen zur Steuerung von Schrittmotoren:
Ich mache es so, dass ich in der ISR erst den Timer auf den neuen Zeitwert setze, dann den Ausgangsport High schalte, kurz warte (1µs) und ihn wieder auf Low setze. Vom übergebenen Zeitwert ist dann abhängig, wann die ISR dann das nächste mal aufgerufen wird. Die Berechnung des Zeitwerts kann man dann in die Hauptschleife verfrachten. Erweitern lässt sich das natürlich auch, zB. mit Schrittzähler, Beschleunigungsrampen oder Bresenhamalgorithmus zur linearen Interpolation von mehreren Motoren (damit nicht jeder einen Timer belegen muss). Wenn man mehrere Motoren so zwischen einzelnen Punkten interpoliert und die Abstände zwischen den Punkten recht klein wählt, dann dürften sich ziemlich runde Bahnen generieren lassen. Hab das aber selber auch noch nicht so vollständig getestet.
Hier nochmal ein bisschen Code zum Timer:
Mit dem Prescaler kann man dann die Quarzfrequenz skalieren. Mit niedrigen Werten kann man die Taktrate höher auflösen, dafür aber keine ganz niedrigen Geschwindigkeiten mehr fahren. Für mich hat sich ein Prescaler von 8 als ganz nützlich herausgestellt, aber natürlich kannst du damit selber ein wenig herumprobieren.Code:$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
On Timer1 Isr1
Config Timer1 = Timer , Prescale = 8
Enable Timer1
Enable Interrupts
Config PortA = Output
PortA.1 = 0
Dim Zeit As Byte
Zeit = 100 'einzelner Schritt dauert 100*Prescaler/Quarzfrequenz= 50 µs
Do
!NOP 'Hauptschleife ist komplett frei, hier kann alles andere berechnet werden
Loop
Isr1:
Load Timer1 , Zeit
Toggle PortA.1
Waitus 1
Toggle PortA.1
Return
Danke für die Mühe. Werde ich mal drüberschauen. :)
Jetzt noch eine Frage an euch : Würde euch ein kleines Video mit nur zwei Achsen für den Anfang reichen ???
- - - Aktualisiert - - -
Hallo nochmal,
ich wollte nur noch sagen ,dass ich es endlich geschafft habe ein mini Video zu machen.
Hier fährt er die Ref-Positionen an. :) auch wenn es wenig ist ,aber ich freu mich.
http://www.youtube.com/watch?v=_CYCB6ip0Is
Das sieht schon sehr gut aus. Funktioniert das Programm schon mit Timern oder noch mit delays?
MfG Hannes
Ist noch nicht mit Timer. Dazu komme ich erst in paar Wochen.
Ich wollte übrigens noch zum Video etwas sagen: In diesem Video kann man sehen ,wie der Roboterarm die Nullposition anfährt.