« Controleur de Lumière » : différence entre les versions

De fablabo
Aller à :navigation, rechercher
Cedric (discussion | contributions)
Cedric (discussion | contributions)
 
(17 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Projet
{{Projet
|status= Prototype
|status=Prototype
 
|image=Light.control.soldered.board.jpg
|description=Une centrale de phares clignotants pour velo ou velomobile
|license=CC-by-sa-3.0
|contributeurs=Cedric
|ingrédients=electronique
|name=Contrôleur de lumière
|name=Contrôleur de lumière
|description=Une centrale de phares clignotants pour velomobile
|license= CC-by-sa-3.0|Creative Commons Attribution CC-by-sa-3.0 France
|contributeurs=Cedric
|ingrédients=electronique
}}
}}
==Résumé==
==Résumé==


Ligne 278 : Ligne 275 :


==Essais==
==Essais==
on programme le tiny en tapant
make -f Light.control.44.make program-usbtiny




Ligne 338 : Ligne 339 :


<code lang="python">class C_5mm(part):
<code lang="python">class C_5mm(part):
class C_5mm(part):
   #
   #
   # 5mm capacitor
   # 5mm capacitor
   #
   #
  #   
   def __init__(self,value=''):
   def __init__(self,value=''):
       self.value = value
       self.value = value
       self.labels = []
       self.labels = []
       self.pad = [point(0,0,0)]     
       self.pad = [point(0,0,0)]     
       self.shape = rectangle(-.02,.02,-.11,-.019)    
       #self.shape = rectangle(-.02,.02,-.11,-.019)  
      self.shape = cube(-.02,.02,-.11,-.019, 0,0)
       self.pad.append(point(0,0.05,0))       
       self.pad.append(point(0,0.05,0))       
       self.labels.append(self.text(self.pad[1].x,self.pad[1].y,self.pad[1].z,'-'))       
       self.labels.append(self.text(self.pad[1].x,self.pad[1].y,self.pad[1].z,'-'))       
       self.shape = add(self.shape,rectangle(-.02,.02,.019,.11))       
       self.shape = add(self.shape,cube(-.02,.02,.019,.11,0,0))       
       self.pad.append(point(.0,-.05,0))  
       self.pad.append(point(.0,-.05,0))  
       self.labels.append(self.text(self.pad[2].x,self.pad[2].y,self.pad[2].z,'+'))</code>
       self.labels.append(self.text(self.pad[2].x,self.pad[2].y,self.pad[2].z,'+'))</code>
à noter que j'ai découvert une particularité du code : pour faire des traces qui ne dessinent pas aussi des trous, il faut utiliser des primitives de volume (cube, cylinder...), les formes plates (square,circle) provoquant des trous.


===Le circuit principal===
===Le circuit principal===
Ligne 356 : Ligne 362 :
j'ai repris le même schéma en élargissant les pistes de puissance.
j'ai repris le même schéma en élargissant les pistes de puissance.


J'ai créé une dérivation pour avoir le choix d'alimenter les lampes soit en 5V régulé, soit avec l'alimentation principale (pile 9V)
J'ai créé une dérivation pour avoir le choix d'alimenter les lampes soit en 5V régulé, soit avec l'alimentation principale (6 à 12V)


[[image:Light.central.v2.44.board.png|300px]][[image:Light.central.v2.44.cut.png|300px]][[image:Light.central.v2.44.traces.png|300px]]
[[image:Light.central.v2.44.board.png|300px]][[image:Light.central.v2.44.cut.png|300px]][[image:Light.central.v2.44.traces.png|300px]]


les fichiers sont en 90pixels/mm
les fichiers sont en 72pixels/mm


*R2,R3,R4 = 100k
*R2,R3,R4 = 100k
Ligne 377 : Ligne 383 :


Work in progress : [[Media:Lumvelo.zip]]
Work in progress : [[Media:Lumvelo.zip]]
===Fabrication===
====Fraisage====
Le circuit est réalisé en fraisage avec la Modela MDX20
====Soudure des composants====
[[image:Lumvelo.soude.jpg|600px]]
====Cablage====
Le circuit a deux ou trois options de cablage :
* on peut choisir la tension d'alimentation des lumières
* on peut éventuellement cabler le capteur de lumière avec les interupteurs (du code doit être écrit)
[[image:LightControl.wiring.png|600px]]
===Tests===
sans charge, ça fonctionne bien
mais lorsqu'on câble des leds derrière les mosfets, ça fait des trucs bizarres
Avec Laurent, j'ai découvert que même sans charge, l'alim perd 1 V quand on actionne les inter de clignotants : ça fait beaucoup  alors je check mon code
Je pense que les entrées en pullup fonctionnent bizarrement.
Je vérifie la mise en oeuvre des résistances pullup http://www.micahcarrick.com/avr-tutorial-switch-debounce.html
===Debuggage===
Avec l'aide de Laurent, j'ai réussi à isoler le problème :
En voulant configurer mes entrées numériques en "pullup", je les ai configurées en sortie, donc lorsqu'on actionnai un interrupteur, elles tentaient de fournir un maximum de courant (car étant reliées à la masse, elle provoquaient un court circuit).
J'ai donc changé le code  :
<code lang=C>
// initialise button pins pullup
  //
  set(button_port,LeftBton_pin);
  set(button_port,RightBton_pin) ;
  set(button_port,LightBton_pin);
    //initialise inputs
  set(Lights_direction,LeftBton_pin);
  set(Lights_direction,RightBton_pin);
  set(Lights_direction,LightBton_pin) ;
</code>
par
<code lang=C>
// initialise button pins pullup
  button_port |= _BV(PA4);
  button_port |= _BV(PA5);
  button_port |= _BV(PA6);
</code>
Finalement le code fonctionne !
===Fichiers finaux===
Je publie d'hors et déjà les [[media:LightControl.V2.zip|fichiers de fabrication finaux]], avant d'[[Controleur_de_Lumière/Implantation|implanter le circuit]] dans mon vélomobile


[[Catégorie:FabAcademy]]
[[Catégorie:FabAcademy]]