Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Toen ik mijn 3D-printer kreeg, begon ik te denken wat ik ermee kon maken. Ik heb veel dingen geprint, maar ik wilde een hele constructie maken met behulp van 3D-printen. Toen dacht ik erover om robotdier te maken. Mijn eerste idee was om een hond of spin te maken, maar veel mensen hebben al honden en spinnen gemaakt. Ik dacht aan iets anders en toen dacht ik aan slang. Ik ontwierp een hele slang in fusion360 en het zag er geweldig uit, dus bestelde ik de benodigde onderdelen en bouwde ik er een. Ik vind het resultaat geweldig. Op de video hierboven kun je zien hoe ik het heb gemaakt of je kunt er hieronder over lezen.
Stap 1: Onderdelen
Dit is wat we nodig hebben:
- 8 micro-servomotoren
- Sommige 3D-geprinte onderdelen
- Schroeven
- 3, 7V li-po-batterij
- Enkele onderdelen om PCB te maken (atmega328 SMD, condensator 100nF, condensator 470μF, weerstand 1, 2k, enkele goudpinnen). Het is erg belangrijk om PCB's te maken voor dit project, want als je alles op een breadboard aansluit, zou je slang niet kunnen bewegen.
Stap 2: 3D-modellen
Hierboven zie je visualisatie van deze slang. Bestanden (.stl) die je hier of op mijn thingiverse kunt downloaden. Wat informatie over instellingen voor afdrukken:
Voor het printen van segmenten en kop raad ik aan om raft toe te voegen. Ondersteuning is niet nodig voor alle objecten. Infill is niet zo belangrijk omdat alle modellen erg dun zijn en er bijna alleen perimeters zijn, maar ik gebruik 20%.
Jij hebt nodig:
8x snake_segment
1x slangenkop
1x snake_back
Stap 3: PCB
Hieronder vind je eagle-bestanden (.sch en.brd) download ze gewoon open in eagle ga naar board view klik ctrl + p en print het uit. Als je niet weet hoe je PCB moet maken, kun je hier meer over lezen:
www.instructables.com/id/PCB-making-guide/
Op het schema staat dat de microcontroller atmega8 is, maar het is atmega328, het heeft dezelfde pinout, maar er is geen atmega328 in eagle.
Stap 4: Montage
Na het printen van alle onderdelen kun je ze in elkaar zetten. Plaats de servo in een van de segmenten, schroef deze tot het segment vast met de M2-schroef en schroef vervolgens het volgende segment op de servo-arm. Als je niet weet hoe je het moet monteren, kun je de video bekijken.
Stap 5: Aansluiting
Op bovenstaande foto kun je zien waar en wat je moet aansluiten. Ik heb ook aangegeven waar de MISO-, MOSI- en SCK-pin is, je hebt deze pin nodig om de bootloader te branden. Meer over het branden van bootloader kun je hier op de officiële arduino-pagina lezen:
www.arduino.cc/en/Tutorial/ArduinoToBreadboard
Je hebt een programmeur of een andere arduino nodig om het te branden. Na het branden kun je het programmeren met een USB-UART-converter of dezelfde programmer die je gebruikt voor het branden van de bootloader.
Na het uploaden van het programma kun je de servo op het bord aansluiten. De laatste servo (aan het einde van de slang) is servo 1 en servo 8 is het dichtst bij de kop van de slang.
Er is geen enkele stabilisator op het bord, dus de maximale spanning die u erop kunt aansluiten is 5V.
Zowel Atmega als servomotoren werken met 3, 7V Li-Po en ik raad aan om het voor dit project te gebruiken omdat het erg klein en erg krachtig is. Je kunt het vinden in oud RC-speelgoed (ik vond mijn in oude RC-helikopter).
Ik heb aan het bord pinnen RX en TX toegevoegd voor programmering maar ook voor toekomstige uitbreiding, je kunt hier sensoren aansluiten of b.v. bluetooth-module.
Stap 6: Programmeren
Programma maakt gebruik van software-servobibliotheek om 8 servo's tegelijk te besturen. Het is gewoon het verhogen en verlagen van de servopositie met een kleine verschuiving om de golf te imiteren. Dankzij deze beweging ziet het eruit als een worm, maar beweegt het ook efficiënter.
Als je wilt, kun je de vertraging aan het einde van de lus wijzigen. Deze vertraging regelt de snelheid van de slang. Dus als u een kleinere waarde geeft, zal deze sneller bewegen, hogere waarde = langzamer bewegen. Ik heb 6 gegeven omdat dit de hoogste snelheid is waarbij de slang niet omrolt. Maar je kunt hiermee experimenteren.
U kunt ook de maximale en minimale waarde wijzigen om bewegingen groter te maken.
#erbij betrekken
SoftwareServo servo1, servo2, servo3, servo4, servo5, servo6, servo7, servo8;
int b_pos, c_pos, d_pos, e_pos; Tekenreeksopdracht; int verschil = 30; int hoek1 = 90; int hoek2 = 150;
int ser1 = 30;
int ser2 = 70; int ser3 = 110; int ser4 = 150;
int minimum = 40;
int maximum = 170;
bool increment_ser1 = waar;
bool increment_ser2 = waar; bool increment_ser3 = waar; bool increment_ser4 = waar;
bool increment_ser5 = waar;
int ser5 = 90;
bool increment_ser6 = waar;
int ser6 = 90;
ongeldige setup() {
Serieel.begin(9600); servo1.bevestigen (3); servo2.attach(5); servo3.attach (6); servo4.attach (9); servo5.attach(10); servo6.attach (11); servo7.attach (12); servo8.attach(13);
servo1.write(90);
servo2.write(130); servo3.write(90); servo4.write(100); servo5.write(90); servo6.write(90); servo7.write(90); servo8.write(90);
}
lege lus() {
naar voren(); SoftwareServo::refresh(); }
ongeldig vooruit(){
if(increment_ser1){
ser1++; }anders{ ser1--; }
if(ser1 maximum){
increment_ser1 = onwaar; }
servo1.schrijf(ser1);
if(increment_ser2){
ser2++; }anders{ ser2--; }
if(ser2 maximum){
increment_ser2 = onwaar; }
servo3.write(ser2);
if(increment_ser3){
ser3++; }anders{ ser3--; }
if(ser3 maximum){
increment_ser3 = onwaar; }
servo5.write(ser3);
if(increment_ser4){
ser4++; }anders{ ser4--; }
if(ser4 maximum){
increment_ser4 = onwaar; }
servo7.write(ser4);
vertraging (6);
}
Stap 7: Conclusie
Ik vind dat deze robot er erg goed uitziet. Ik wilde een slangenrobot maken, maar uiteindelijk heb ik iets gemaakt dat op een worm lijkt. Maar werkt erg fijn. Als je vragen hebt, laat dan een reactie achter of schrijf me: [email protected]
je kunt ook hier op mijn website over deze robot lezen (in het Pools):
nikodembartnik.pl/post.php?id=3
Deze robot won de eerste prijs op het Robots Festival in Chorzów in de categorie freestyle.
Tweede prijs in de Robotics Contest 2016