Tu as bien fais de mettre des commentaires />/> Je sais pas si on peut plus l'obtimiser mais dans tout les cas tant que ça fonctionne ça va xD />/>
Les commentaires sa devrait être obligatoire ! lol
Comme tu dis tant que sa fonctionne
Il y a 16 élément(s) pour j-l freerider (recherche limitée depuis 04-mai 13)
Posté par j-l freerider sur 26 décembre 2013 - 10:23 dans Autres projets inclassables
Tu as bien fais de mettre des commentaires />/> Je sais pas si on peut plus l'obtimiser mais dans tout les cas tant que ça fonctionne ça va xD />/>
Posté par j-l freerider sur 27 décembre 2013 - 11:32 dans Autres projets inclassables
une première évolution consiste à remplacer toutes les procédures "PWM" par une function ayant pour paramètres PortNumber,TimeOn, TimeOFF.
Ceci permettrait ainsi d'avoir un balayage continu.
Cependant normalement les servos doivent être pilotés toutes les 20ms; pour ce faire, vu la taille du code, une procédure gérant les servos et qui n'est exécutée que toutes les 20ms est possible, le mieux étant de générer une interruption toutes 20ms.
une autre : schéma de la mesure du courant ? un shunt sur le 0 avec un ampli op non inverseur?
Posté par j-l freerider sur 27 décembre 2013 - 12:13 dans Autres projets inclassables
Posté par j-l freerider sur 27 décembre 2013 - 12:46 dans Autres projets inclassables
et la valeur du shunt ?
as tu fait un essai sur table ? ne doit pas être linéaire et chute de tension importante ?
Posté par j-l freerider sur 24 décembre 2013 - 10:28 dans Autres projets inclassables
Posté par j-l freerider sur 26 décembre 2013 - 09:47 dans Autres projets inclassables
program mo_robot; // Robot balayeur // PIC 16F88 / int 8 MHz // Written and compiled with MikroPascal Pro V5.30 var wIn1: word; wIn2: word; win3: word; win4: word; i: byte; i1: byte; i2: byte; i3: byte; i4: byte; i5: byte; i6: byte; const cdo = 523; cdod = 554; cre = 587; cred = 622; cmi = 659; cfa = 698; cfad = 739; csol = 783; csold = 830; cla = 880; clad = 932; csi = 987; cdoG = 1046; procedure Main_Init; begin CMCON := CMCON or $07; // turn off comparators CCP1CON := CCP1CON or %00001100; // turn on PWM OPTION_REG := %10000000; // pullup désactivé (bit 7 à 1) INTCON := $00; TRISA := %00001111; TRISB := %00000000; ANSEL := $00; ANSEL.ANS0 := 1; // set RA0 as analog input ANSEL.ANS1 := 1; // set RA1 as analog input ANSEL.ANS2 := 1; // set RA2 as analog input ANSEL.ANS3 := 1; // set RA3 as analog input ANSEL.ANS4 := 0; // set RA4 as digital I/O ANSEL.ANS5 := 0; // set RB6 as digital I/O ANSEL.ANS6 := 0; // set RB7 as digital I/O OSCCON := 0; OSCCON.IRCF2 := 1; OSCCON.IRCF1 := 1; OSCCON.IRCF0 := 1; ADC_Init; delay_ms(100); Sound_init(portb, 2); end; // Procedure de controle des servomoteur: // Roue gauche---------------------------------------------------------------- procedure PWM_9; begin PORTB.0 := 1; delay_us(1300); PORTB.0 := 0; delay_ms(5); end; procedure PWM_8; begin PORTB.0 := 1; delay_us(800); PORTB.0 := 0; delay_ms(5); end; procedure PWM; begin {PORTB.0 := 1; delay_us(1435);} PORTB.0 := 0; delay_ms(5); end; procedure pwm8; begin PORTB.0 := 1; delay_us(2000); PORTB.0 := 0; delay_ms(5); end; procedure pwm9; begin PORTB.0 := 1; delay_us(1525); PORTB.0 := 0; delay_ms(5); end; // Roue droite---------------------------------------------------------------- procedure PWM_9_; begin PORTB.1 := 1; delay_us(1280); PORTB.1 := 0; delay_ms(5); end; procedure PWM_8_; begin PORTB.1 := 1; delay_us(800); PORTB.1 := 0; delay_ms(5); end; procedure PWM_; begin {PORTB.1 := 1; delay_us(1425);} PORTB.1 := 0; delay_ms(5); end; procedure pwm8_; begin PORTB.1 := 1; delay_us(2000); PORTB.1 := 0; delay_ms(5); end; procedure pwm9_; begin PORTB.1 := 1; delay_us(1590); PORTB.1 := 0; delay_ms(5); end; // Servo avec capteur infrarouge----------------------------------------------- procedure pwmIR; begin PORTA.4 := 1; delay_us(1425); PORTA.4 := 0; delay_ms(2); end; procedure pwmIR1; begin PORTA.4 := 1; delay_us(1925); PORTA.4 := 0; delay_ms(2); end; procedure pwmIR2; begin PORTA.4 := 1; delay_us(925); PORTA.4 := 0; delay_ms(2); end; // Servo du Balai rotatif------------------------------------------------------ procedure pwmB; begin PORTB.4 := 1; delay_us(2800); PORTB.4 := 0; delay_ms(2); end; procedure pwmB1; begin PORTB.4 := 1; delay_us(1200); PORTB.4 := 0; delay_ms(2); end; //------------------------------------------------------------------------------ // Procedure de synchronisation des servos: procedure robot_1; // marche avant / servoIR à gauche begin i:=0; while i < 10 do begin inc(i); pwmIR1; PWM_9; PWM9_; pwmB; end; end; procedure robot_courant; // évitement après mesure de courant > à la référence begin i1:=0; while i1 < 60 do begin inc(i1); pwmB1; PWM8; PWM8_; end; end; procedure robot_obstacle1; //contournement par la droite begin i2:=0; while i2 < 30 do begin inc(i2); PWM9; PWM9_; end; end; procedure robot_2; // marche avant / servoIR au centre begin i3:=0; while i3 < 10 do begin inc(i3); pwmIR; PWM_9; PWM9_; pwmB; end; end; procedure robot_3; // marche avant / servoIR à droite begin i5:=0; while i5 < 10 do begin inc(i5); pwmIR2; PWM_9; PWM9_; pwmB; end; end; procedure robot_obstacle2; //contournement par la gauche begin i6:=0; while i6 < 30 do begin inc(i6); PWM_9; PWM_9_; end; end; begin Main_Init; delay_ms(100); sound_play(cdo, 200); delay_ms(100); sound_play(cdo, 200); delay_ms(3000); sound_play(cla, 160); // Intro musique Mario Bros... (très important ..) delay_ms(2); sound_play(cla, 160); delay_ms(60); sound_play(cla, 180); delay_ms(60); sound_play(cfa, 160); delay_ms(2); sound_play(cla, 160); delay_ms(60); sound_play(cdoG, 180); delay_ms(420); sound_play(cdo, 180); delay_ms(1000); wIn2 := ADC_Read(1) ; // lecture référence de réglage pour le capteur IR wIn4 := ADC_Read(2); // lecture référence de réglage pour la mesure de courant while true do begin wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 <= win2) then begin robot_1; wIn3 := ADC_Read(3); // lecture pour mesure de courant if (wIn3 < win4) then begin robot_courant; end; wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 > win2) then begin robot_obstacle1; end; end; wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 <= win2) then begin robot_2; wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 > win2) then begin robot_obstacle2; end; end; wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 <= win2) then begin robot_3; wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 > win2) then begin robot_obstacle2; end; end; wIn1 := ADC_Read(0) ; // lecture capteur IR if (wIn1 > win2) then begin PWM9; PWM_9_; PWM9; PWM_9_; end; end; end.
Posté par j-l freerider sur 23 décembre 2013 - 10:54 dans Autres projets inclassables
Posté par j-l freerider sur 22 décembre 2013 - 06:17 dans Autres projets inclassables
Salut !
Donc je vous présente mon 1er projet robotique, un robot balayeur,.
Je suis pas le 1er et certainement pas le dernier a faire quelque chose du genre, juste l'architecture différente de se que j'ai pu voir ici et là.
Le châssis est réalisé avec de l'aluminium de récup', Les roues sont propulsée pas des petit servos modifiés pour fonctionner en rotation continu, Même chose pour le moteur de la brosse rotative.
Au niveau électronique, un PIC 16f88 s'occupe du contrôle des données, un capteur de distance IR Sharp posé sur un servomoteur pour la détection d'obstacle et une mesure de courant consommé sur les moteur des roue via le CAN du Pic, pour contourner un éventuel obstacle qui aurait échappé au capteur IR.
Je ne sais pas si mettre le programme du Pic est utile ? si besoin y'a qu'à demander
Assez parlé : voici 2 vidéos de la bête:
et la 2ème !
Bon visionnage !
J-L
Posté par j-l freerider sur 23 décembre 2013 - 06:41 dans Autres projets inclassables
Posté par j-l freerider sur 23 décembre 2013 - 07:34 dans Autres projets inclassables
Posté par j-l freerider sur 23 décembre 2013 - 07:33 dans Autres projets inclassables
Posté par j-l freerider sur 23 mai 2018 - 06:15 dans Robots roulants, chars à chenilles et autres machines sur roues
Posté par j-l freerider sur 23 mai 2018 - 06:11 dans Robots roulants, chars à chenilles et autres machines sur roues
Posté par j-l freerider sur 23 mai 2018 - 05:02 dans Robots roulants, chars à chenilles et autres machines sur roues
Posté par j-l freerider sur 23 mai 2018 - 05:27 dans Robots roulants, chars à chenilles et autres machines sur roues
Posté par j-l freerider sur 22 décembre 2013 - 05:48 dans Et si vous vous présentiez?