Aller au contenu


Hexa Emails

Inscrit(e) (le) 18 janv. 2011
Déconnecté Dernière activité févr. 09 2014 01:37
*****

Sujets que j'ai initiés

Quelqu'un aurait une CNC pour PVC?

20 avril 2012 - 11:38

Salut,

j'aurais besoin d'usiner 6 pièces identiques ( + qq unes de rechanges ) en PVC expansé 5 mm (ou n'importe quel matériau léger, un minimum rigide et solide, facile à percer/ tarauder et isotrope)

voilà les photos du prototype dégueu que j'ai fait:

Image IPB

Image IPB

Image IPB

Image IPB

bon déja à voir la propreté de la pièce on comprends que je ne sois pas capable d'en faire 6 identiques.

Les plans ne sont pas définitifs, ce qu'il faut retenir c'est que c'est juste un plaque usinée (pas de pliage), avec une tolérance ~1mm.

Si quelqu'un a le matos et veux bien me dépanner, ce serait cool.

(on verra ça en MP pour l'expédition etc)

edit: photos visibles ici

Foire aux idées-fixer des moteurs au châssis

07 août 2011 - 06:56

Bonjour,

je me suis remis sur un projet, et n'étant pas satisfait du parallélisme de mes roues, j'ai décidé de refaire toute la mécanique!

je dispose de moteurs CC plus ou moins cylindriques:

Image IPB

ma technique de fixation précédente n'était pas précise:

Image IPB

comme on peut le voir, les roues sont en entrainement direct, j'avais laissé le plastique de la perceuse, qui était déformable et donc j'ai pu forcer dessus avec 2 tiges filetées. le souci c'est que les axes ne sont pas strictement alignés, pas à la même hauteur etc.

Je voudrais savoir si quelqu'un a une idée pour fixer précisément et solidement les 2 moteurs?

Je compte mettre pas mal de poids sur ce robot donc j'aimerai que ça tienne la route ^^

Pour le moment les solutions que j'ai vu sont:

- soit on déporte l'axe (transmission par chaine de vélo par exemple), je prendrai cette solution si je ne trouve pas mieux: ça simplifie la fixation mais fait plus de pièces à prévoir, donc plus de place, on ajoute du jeu mécanique... bref je ne suis pas très confiant.

- soit on fait des pièces avec un demis cylindre de creusé, comme ici (http://www.planete-sciences.org/forums/viewtopic.php?f=5&t=12315 , plus bas sur la page, des dessins solidworks). souci: je n'ai pas de quoi faire ces pièces (en alu massif ou en polymorph)

- il y a aussi la solution de garder tout le plastique de la perceuse et on fixe solidement le manche, mais j'ai déja coupé le manche :wacko: de toutes façons le plasstique était de mauvaise qualité et il y avait du jeu.

Voilà si une bonne ame passe par là et a une idée, je suis preneur :)

Hexapod

03 juillet 2011 - 12:51

Bonjour à tous,

je me lance dans la création d'un hexapode! j'ai reçu samedi mes 2 colis (de robotsavvy et de hobbyking, commandés tous les 2 le 23 juin, c'est TRES rapide!)

je dispose donc de 19 18 servos (déja un de grillé),

Image IPB


et de la magnifique carte Red Back Spider Servo Controler (en anglais) , avec son shield.

Image IPB

Je peux donc contrôler jusqu'à 48 servos!

Mon objectif est de réaliser un hexapod avec les servos 1er prix d'Hobbyking, puis, si ça marche bien, d'en faire un plus gros.

Ce prototype servira donc:

- A tester la mécanique
- A s'entrainer a coder le séquençage de la marche de façon efficace (y a du boulot!)
- Et donc à voir si je peux investir dans des plus gros servos.

voilà le résultat, j'y ai travaillé toute la journée d'hier et un peu ce matin:

Image IPB

Bon, au cas où vous ne l'auriez pas deviné en regardant la photo, le budget est proche du zéro absolu (-273.15)

j'ai déja un souci pour placer la carte, en plus les fils des servomoteurs ne sont pas très longs, je pense donc opter pour cette position:

Image IPB


Et pour finir, une petite vidéo du premier pas de mon hexapod:



...d'une seule patte (ben oui j'ai eu à peine 24h aussi!)


Actuellement je pense regarder les codes des autres hexapod sur le net, pour apprendre à optimiser mon propre code (et pas passer ma vie à saisir des angles), donc si quelqu'un a des conseils, remarques, insultes, qu'il n'hésite pas.

Jouons un peu avec les manettes de Wii :)

02 mai 2011 - 09:28

Bon, comme ce ne sont pas des "créations" très "complexes", je fais un seul post pour tout, et j'édite au fur et à mesure:





Accéléromètre, arduino standalone + LCD



Salut à tous!

cela faisait bien longtemps que j'avais rien fait se rapprochant de la robotique (les stages en entreprise ça ramollit ^^ )

J'ai juste assemblé 3 trucs que j'arrivais à utiliser en un seul.

Ce n'était pas si simple (j'ai un peu galéré avec le code, dèja je suis pas doué pour ça de nature mais là en plus ça faisait longtemps)

J'ai essayé d'épurer un maximum, ma nouvelle passion c'est l'embarqué :p



Voilà ce que ça donne (ma chambre est tellement en bordel que j'ai migré vers la salle d'eau):



JTm84I7AJS0



Et le code, mis à disposition si'il vous plait:



Remarque: il y a besoin d'une librairie "nunchuck_funcs.h", je peux filer le lien si ça intéresse quelqu'un.




* ----------------------------------------------------------------------------

* « LICENCE BEERWARE » (Révision 42):

* a créé ce fichier. Tant que vous conservez cet avertissement,

* vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et

* que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en

* retour. Alexis MAHE

* librement inspiré de Tod E. Kurt, http://thingm.com/

* ----------------------------------------------------------------------------

*/



#include

#include "nunchuck_funcs.h"

#include



LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

int loop_cnt=0;



int accx,accy,accz,zbut,cbut,joyx,joyy;







void setup()

{

Serial.begin(9600);

nunchuck_setpowerpins();

nunchuck_init(); // send the initilization handshake

lcd.begin(16, 2);

lcd.print("AccX:");

lcd.setCursor(8, 0);

lcd.print("AccY:");

lcd.setCursor(0, 1);

lcd.print("AccZ:");

}



void loop()

{

if( loop_cnt > 100 ) { // every 100 msecs get new data

loop_cnt = 0;



nunchuck_get_data();



accx = nunchuck_accelx(); // ranges from approx 70 - 182

accy = nunchuck_accely(); // ranges from approx 65 - 173

accz = nunchuck_accelz();

zbut = nunchuck_zbutton();

cbut = nunchuck_cbutton();

joyx = nunchuck_joyx();

joyy = nunchuck_joyy();

lcd.setCursor(5, 0);

lcd.print(accx);

lcd.setCursor(13, 0);

lcd.print(accx);

lcd.setCursor(5, 1);

lcd.print(accz);

if(cbut)

{

analogWrite(5, joyy);

}

}

loop_cnt++;

delay(1);

}

[/code]



Fonctionnalités:



Affichage de valeurs d'accélérations sur un LCD,

Le rétroéclairage du LCD est contrôlé par le nunchuck (boutton C + joystick)

Le tout tourne sur un ATmega328 monté en standalone.

Le contrôle de la luminosité se fait par PWM (du vrai PWM ce coup ci, pas celui des servomoteurs :p )



Bon ben voilà c'est tout ^^



Asservissement en horizontalité d'un WiiMote



ça faisait un sacré moment que je voulais faire ça... surtout depuis que je ne suis plus "apeuré" par ce qui peut ressembler de près ou de loin à de l'automatique.

Cet asservissement est minable (cela se rapproche d'un type P si je ne me trompe pas), maistenant que j'ai la base (ben oui c'était difficile de mettre un servomoteur sur ma WiiMote), c'est appelé à être amélioré.



une petite vidéo, comme j'aime bien les faire:



pqj3emMhKJ0



voilà le code coté ordinateur (en Processing):


* « LICENCE BEERWARE » (Révision 42):

* a créé ce fichier. Tant que vous conservez cet avertissement,

* vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et

* que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en

* retour. Alexis MAHE

* utilise la librairie wrj4P5.

* ----------------------------------------------------------------------------

*/







import lll.wrj4P5.*;

import processing.serial.*;



Serial Arduino; //pour envoyer les ordres à l'arduino!!

Wrj4P5 wii; //pour utiliser la wiimote !!!



PFont font1;

String ordre;

boolean envoi;

float pitch=0,yaw=0;

int consigne=90 ,mesure, commande=90;

byte commandeserie;

int fc=3; //la fréquence de coupure de l'asservissement, enfin je crois que c'est plus 1/fc mais bon.





void setup() {

size(500,300);

wii=new Wrj4P5(this);

wii.connect();

frameRate(20);

println(Serial.list());

// liste et affiche tous les ports disponibles

Arduino = new Serial(this, Serial.list()[0], 9600);

//crée une connexion série avec l'arduino, le dernier argument est la vitesse

font1 = createFont("Courier", 60); // crée une police

}





void draw() {



textFont(font1);

background(0); //tout peindre en noir

stroke(255); //écrire en blanc



text("Consigne:",50,100);

text(consigne, 380, 100);

text("Mesure:",50,250);

text(mesure, 380, 250);



//sur les 2 lignes suivante on rend le signal plus facilement exploitable:

pitch= pitch + 0.2*( (int)(map(wii.rimokon.stablePitch(),-0.1,0.1,0,180))-pitch);

yaw = yaw + 0.2* ((int)(map(wii.rimokon.stableRoll(),-0.1,0.1,180,0))-yaw);





mesure= int(pitch);

//on adapte la consigne en foction de notre mesure.

commande = commande - (consigne-mesure)/fc;



commandeserie=byte(commande);



if(envoi)

{

Arduino.write(commandeserie);

println(commandeserie);

}

}



void buttonPressed(RimokonEvent evt, int rid) {



if (evt.wasPressed(RimokonEvent.A))

{

commande=90; //pour débugger

println("A");

envoi=!envoi; //pour déclencher l'envoi de données (et donc faire bouger le servo)

} //on doit appuyer une fois sur le bouton A de la WiiMote.

}



void keyPressed() { // évènements clavier

if (key == CODED){

if (keyCode == UP) consigne = consigne + 1;

if (keyCode == DOWN) consigne = consigne - 1;

}

}[/code]



le code coté arduino (simple, comme souvent lorsqeu j'utilise l'EEEpc elle me sert plus de carte I/O)


* ----------------------------------------------------------------------------

* « LICENCE BEERWARE » (Révision 42):

* a créé ce fichier. Tant que vous conservez cet avertissement,

* vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et

* que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en

* retour. Alexis MAHE

* ----------------------------------------------------------------------------

*/





#include



int ordre = 90;

Servo pitch;



#define pinpitch 9 //servo de direction "haut-bas"





void setup()

{

Serial.begin(9600);

pitch.attach(pinpitch,700,2100); // mon servomoteur est un peu défectueux, je le bride pour ne pas l'abimer.

pitch.write(ordre);

}





void loop()

{



pitch.write(ordre); //le servo se place à la consigne



if (Serial.available()) //si il y a une nouvelle consigne

{

ordre = Serial.read(); //obtenir la nouvelle consigne

}





} [/code]

électronique acoustique (impédance d'entrée et autres)

21 avril 2011 - 05:53

Bonjour à tous!



Vous ne le savez peut être pas, mais je suis un grand nostalgique...

J'ai trouvé dans le grenier de mes parents un tourne-disque, et j'ai craqué!

je me suis dit "je vais installer ça dans ma chambre".



Dans ma chambre j'ai une chaine hi-fi, qui dispose d'une entrée analogique (dont je me sert pour amplifier le son de mon ordi)



le tourne disque était un "module" d'une grosse chaine hi-fi qui est morte (enfin presque). L'ancien ampli permettait d'alimenter le tourne-disque (en 12V, là j'utilise mon alim de PC ;) ) la sortie audio est en RCA:

Image IPB



j'utilise cet adaptateur:

Image IPB



seulement voilà, je dois mettre le son de ma hi-fi au max pour entendre à un volume acceptable mon vinyle!



Donc mon projet: créer un pré-ampli (qui de préférence ajoute pas trop de bruit)

Bien évidemment, analogique ^^



J'ai pleins de questions:



1)Puis-je utiliser un simple AOP monté en ampli (inverseur ou non-inverseur) pour amplifier mon signal audio? (j'en ferai 2, car c'est en stéréo)



2) sur un câble RCA, la "masse" est à l'extérieur non?



3)Une entrée analogique d'une chaine hi-fi, dispose d'un CAN ou d'un ampli analogique? (je suppose que les 2 existent) Ma chaîne n'est pas trop vieille.



4) à quoi je dois faire attention? (impédance, bande passante, atténuation,lâchez vous!)



si vous avez des remarques ou des conseils, n'hésitez pas!