last update : 21 dec 2008 Sources d'informations sur le Web, pour le point de depart du projet: =================================================================== astro.trident.free.fr perso.wanadoo.fr/pierre.lando http://membres.lycos.fr/csclanbef/Images/lcd_hd/DCP01334.JPG http://z.oumnad.123.fr/Microcontroleurs/PIC16F876.pdf site de Bigonoff : _Cours_16F87x_Part2-R2.pdf, Terminal BigOnOff site de J.P.Mandon _ICSP 16F876 downloader site de MicroChip Pic16F876_datasheet MaxStream terminal X-CTU_serial PIC_Paging_and_PCLATH.htm Materiel de base: ================== vieux DD 80Mo demontage moteur connection sur les 2 pins de gauche R Voice coil = 14,8 ohms double aimant à l'origine, enlevé aimant superieur coupé la butee pour augmenter le debattement angulaire, et supprimer le bruit de chocs sur butees 28/08/06............. decoupe partie voice coil pour montage sur platine en bois afin de pouvoir placer les ressorts face à face sur l'axe du bras. Achat de 8 mini-leds diam 1,8mm rouge ref 23-0346 à 0,60€ PU chez AG-Electronique Lyon Recuperation fil fin cuivre emaillé de diam < 0,1mmm sur une bobine de relais... soudure à la méga-loupe eclairante! montage d'un bout de CI à picot (recup) pour recuperer la connection des 8 leds. ajout capteur de proximité diam 5mm L=25mm pour detection bord gauche Le capteur de proximité ,de type industriel (recuperation), est prevu normalement pour une alim de 24V mais fonctionne des 5V mais avec une porté plus reduite soit 0,5mm au lieu de 2mm > reglage pointu! ------------------------ 29/08/06 mesure au SCOPE SCM1241 /PC du signal capteur de proximité alim 5V excitation avec NE555 Top 20mS Periode 93mS Fosc=12 à 15Hz Capteur de proximité diam 5mm, à gauche t=20mS Periode complete = 93mS soit un aller-retour ------------------------------------------------- VERSION PC ------------------------------------------------- 9/09/06 1er test en liaison avec le PC pour tester FACILEMENT le hardware Rajout ULN2803 + R=390 ohms pour cde des leds via port LPT1 bornier FLKM-D25M Rajout d'un transistor type 2N2222 NPN pour avoir la commutation "seche" 1 -> 0 sur entree BUSY deja pré-polarisée sur port parallele LPT1. Reglage fin du capteur de proximitée d=0,1mm pour obtenir un top synchro peu large resultat:7,3mS pour periode de 93,8mS (10,73Hz) ..ok verif liaisons avec Tst_inpout32.exe ..OK 10/09/06 HARP5.bas sous TBAS lecture font02.dat issue de POLICVGA.BAS en 8x8 affichage lettre OK mais dans le sens VERTICAL! 16 car @2mS,il faut retourner la matrice! 13/09/06 fichier excel pour test police 5x7 : matrice8x8_127car.txt Police_HAPR_2.xls, police encapsulee dans du 8x8 15/09/06 programme VB6 HAPR_test_vb6.exe .. connecté à LPT1 du PC via ULN2803 test ,date,heure 16 car maxi! test OK ------------------------------------------------ VERSION PIC16F84 ------------------------------------------------ 16/09/06 remplacement des ressorts (de stylo bille) par des ressorts de chez Mr Bricolage ressort MECA ref RST13 acier galvanise fil de 0,6mm L=50mm dia=6mm externe oeilleton de dia 4,7mm 30/09/06 version avec PIC16F84 harp_03.asm PB hard: fil commun alim anodes (+5V) 8 leds ,cassé à ras la soudure! => resoudure.OK debugging en pas à pas avec mplab.... 1/10/06 version HAPR_06 message de 32 car defilant dans fenetre de 16car par pas de 1 car!!! petit bug ? lettre Y tronquée ? char de 5x7 seulement avec 16F84 4/10/06 corrections du bug .. PB de franchissement de page et indexation caractere version Hapr_06b.asm ..OK ================================================= VERSION PIC16F88 ================================================= 11/10/06 Passage au 16F88 pour pouvoir installer une matrice 8x8 HAPR88a_OK_11oct06.asm version OK avec 32 car defilant dans fenetre de 16 car 13 oct 06 HAPR88b.asm version OK avec 2 messages de 64 car ,matrice 5x7 , defilant dans fenetre de 16 car 15 oct 06 HAPR88c.asm version message de 32 car Matrice 8x8 , defilant dans fenetre de 16 car colonne par colone...bug 29 oct 0 HARP88e.asm version message 16 car defilant col par col OK (matrice car debut en 0x200...)..bug 02 nov 06 Harp88f rajout entree ANA 16 car defilant col par col OK, modfi matrice car debut en 0x500 02 nov 06 HAPR8car.asm avec entree ANA, mais 8 car seulement! defilant col par col OK 03 nov 06 Harp88g rajout entree ANA 16 car defilant col par col OK 03 nov 06 Harp88h rajout entree ANA 16 calibree en degres pour lM335 ,16 car defilant col par col OK mais resolution 1°C, trop faible avec capteur en direct 04/11/06 demontage proto bois pour mise sur marbre... 05/11/06 tentative de percage marbre .. 2 trou 2 meches carbure 10/11/06 montage mecanique sur marbre OK 24/11/06 HAR88j_smooth.asm Lecture car par pooling sur RA4 avec fenetre temporelle (40mS)d'autorisation gérée par Timer0..=> aleas 29/11/06 har88k_smooth.asm traitement lecture de car par interruption timer0! puis pooling B0 n'etant pas disponible, on detecte l'arriv‚ du car par une impulsion front descendant RA4 en faisantt deborder le compteur Tmr0 et genere donc une interruption dans la routine d'interrupt on lit le caractere en mode pooling test si BS=8=>efface car ou TAB=9=>RAZ position car ====================================================== VERSION PIC16F876 ================================================= Y en a marre de sortir et remettre le µP sur son support, je me lance donc dans une version avec bootloader incorporé => fini les transfert du µP sur le programmateur puis sur la plaquette de test.. 20/12/06 Installation Bootloader dans le 16F876 avec programmateur POK508 et ICProg en mode basse tension LVP ---- 24/12/2006 16F876 avec bootloader installé , programmation ICSP via 2 fils RC7 Pin 18 et RC6 pin 17 usage de ICSP bootloader inclus à partir de 1F00 ..a ..1FFF bootldr_876_ok_061224.asm programmation par liaison serie IN CIRCUIT pin17=RC6=Tx -- Blanc/vert ---- 3 de DS275 pin18=RC7=Rx ----- Vert ------- 1 de DS275 liaison RS232 pour appli pin21=RB0 <- blanc...3 de DS275 5 <- 2 RS232 Tx DB9M clavier pin22=RB1 -> vert ...1 de DS275 7 -> 3 Rs232 Rx DB9M ecran ; ne pas toucher à la zone Common AREA 0x70 ..7B inclus ; mais 0x7C, 7D 7E 7F restent dispo 1er TEST Bootloader avec : test_ICSP_ok_061224.asm Je me demande pourquoi je ne l'ai pas fait plus tot, quel confort d'utilisation Via un simple basculement d'inter-double , je transfere le programme *.HEX via la RS232, ou j'utilise la RS232 dans mon appli. ------------------------------------ 30/12/06 version OK : HAPR_876_ICSP_2.asm rajout selection dynamique Msg1 avec mesure temperature ou msg2 modifiable par RS232 via etat pin RA2 choix mode 8CAR ou 16 CAR au moment de l'assemblage 07/01/07 Deplacement zones DEF CAR en 0xB00 pour rajout I2C DS1307 rajout tracage pour debugging : HAPR_ICSP_3.asm Q=8MHz PIC16F876 PaulFjujo 070106 1 2 3 ********* Eh oui, ca plante au changement de caractere, -> franchissement de page pour le CALL ... => rajout manipulation du bit 3 PCLATH Ce bug m'a fait patiné dans la semoule pendant un moment! -------------------------------- 27/01/07 HARP_ICSP_4.asm version OK avec traitement PCLATH tables caractere en fond de memoire, avant le bootloader zone B00...au lieu de 500 MAIS avec DS1307 non activé! 28/01/07 HARP_ICSP_5.asm avec DS1307 liaison en I2C gérée 100% software , activée. bug sur horloge.. Date et heure OK au 1ere lecture puis BAD ensuite, puis Ok, puis BAD ??? 03/02/07 HAPR_876_ICSP_6.asm bug : interference entre IT Rb0 acquisition car et rangement dans buffer Texte et traitement Saisie_Caracteres pour mise à l'heure horloge DS1307 via Buffer MAJ modif pour ne garder que l'acquisition char en interrupt et traiements separés dans Waitsynchro et Saisie2car HARP_876_ICSP_7.asm partie I2C Horloge debugée : bug routine I2C enfin demasqué! confusion entre ACK et M_ACK c'était pourtant exactement la meme routine employée sur mon datalogger ..qui fonctionne! Mise à l'heure RTC debugée ..OK en test sur RS232 (et terminal) ----------------- 04/02/07 HARP_876_ICSP_8.asm affichage Date heure ne se fait pas sur les leds ? corrige bug Renseigne_Time pointait sur Buffer_MAJ au lieu de Buffer_Texte autre bug: attention buffer_Texte+10 => offset +16!! ne pas oublier le point -> Buffer_Texte+.10 Version stable , affichant soit Date Heure te temperature, soit un message de 32 char. defilant sur 16 car affiches... modif du message via terminal sur RS232, en 1 bloc laissé tombé la modif en ligne en temps reel, car trop d'aleas , meme en mode interrupt car alloué seulement pendant le temps mort de NON AFFICHAGE soit environ 10% du temps. Le mode modif du message est activé par l'envoi du char "&" (apersand ou ET logique) on a alors la main, l'affichage led s'eteint.. et tout le temps de redefinir le message de 32 char., terminaison par nombre de char. atteint ou char "CR". ;04/02/07 ;HARP_876_ICSP_8.asm ;Executing: "C:\MPLAB722\MPASM Suite\MPASMWIN.EXE" /q /p16F876 "HAPR_876_ICSP_8.asm" /l"HAPR_876_ICSP_8.lst" /e"HAPR_876_ICSP_8.err" ;Message[306] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 626 : Crossing page boundary -- ensure page bits are set. ;Message[306] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 639 : Crossing page boundary -- ensure page bits are set. ;Message[306] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 649 : Crossing page boundary -- ensure page bits are set. ;Warning[202] C:\MPLAB722\_16F876\HAPR_876_ICSP_8.ASM 1030 : Argument out of range. Least significant bits used. ;Loaded C:\MPLAB722\_16F876\HAPR_876_ICSP_8.COD. ;BUILD SUCCEEDED: Sun Feb 04 11:55:13 2007 message obtenu sur terminal au debut du programme ;============ ; HAPR_ICSP_8.asm Q=8MHz ; PIC16F876 avec bootloader ; ver 070203 PAULFJUJO ; 04/02/07 11H53M36S ;============ ;18/02/07 separé pin test hardware et pin MAJ RTC ; ATTENTION si tension Pile=0V pas possible d'initialiser le RTC ; il faut Vpile > 2,5V ; 05/02/07 ;suppression du 0 dizaine d'heure et jour horloge et mesure Temper 03 mars 07 Version avec Max186 ADC 12 bits dialogue en mode simili SPI par soft pour la mesure de temperature LM335 au mV donc au 1/10ém de degre Rajout filtrage sur 64 mesures (64 scan => ~6 sec) rajout mode compilation AVEC/SANS SHIFT pour avoir Heure et temp sur 16 cars (voir ligne 191) - message fixe 16 car - message defilant 32 car dans fenetre de 16 cars En resumé: 16F876 utilisé toutes les PINS except Rb3 non accessible car mode LVP prg ICS bootloader. Maintenant ,il va falloir faire un C.I. propre pour ce proto... -------------------- ;10 mars 07 Version (SANS MAX186) avec l'ADC du 16F876 mais avec echelle dilatee 1.64 … 3,33V ; pour avoir une resolution de 0,2øC -------------------- ;5/04/07 rajout sortie sur Rs232 tous les 32 caracteres soit 32*8*97.65mS soit ~25 sec. -------------------- mardi 6/11/07 Etude de C.I. sous ARES LITE reçu LICENCE.LXK Multipower PROTEUS 6.92 lite ------------------- 28/06/2008 commande circuit imprimé ------------------ 24/07/08 reçu circuit imprimé HAPR TOULET ..OK 1/12/08 21H09M00S ;============ ; corrige bug Renseigne_Time pointait sur Buffer_MAJ au lieu de Buffer_Texte ; attention buffer_Texte+10 => offset +16!! ne pas oublier le point -> Buffer_Texte+.10 ;HARP_876_ICSP_7.asm partie I2C debug‚e : ; bug routine I2C confusion entre ACK et M_ACK ----------------- Dec 2008 Transfert montage prototype sur circuit -imprimé debugging...hardware --------- PB & erreurs sur circuit imprimé --------- ; voir rajout ligne 750 pour inversion ordre bits allumage leds suite erreur sens de cablage ; inversion +Vref et - Ref sur circuit imprimé ; inversion pistes pin 2-3 5 sur DB9F ... sens inverse ! ; sac de noeud sur inverseur RS232 . ------- 7/12/08 Fonctionnement OK mais necessite de remplacer R 1K par 1,5K ajustable pour la calibration mesure de temperature LM335 -------------------- 16/12/2008 Video de l'horloge avec wabcam et AMCAP version 8.00 microsoft 1997-2000 reglage Set frame rate =10 frame/sec ou moins essai_hapr.avi -> divx6.8 ------------------- ;18/12/08 ajustage R 1200 au lieu de 1000 pour niveau 4.09V sur RA3 +ReF et 2.04 sur RA2 -REF ------------------ 21/12/08 Bug calcul mesure de temperature resolu : mesure en points (0 à 1024) * 20 - offset= -65°C * 100 car ~2048mV pleine echelle pour 1024 points Accumulation de 20 mesures pour multiplier par 2 et par 10 et on enleve l'offset -65°C -> -650 mv *10 car accumulation de 1 pour avoir le 1/10e de degre en affichage correction de l'offset pour la valeur absolue: ajustement offset avec reel value mesuree 6500-6425=> +0.75°C correctif ---------------- Autres notes.. en vrac ---------------------------------------------------- 3.3 Ferrofluid Ferrofluidic materials have been used occasionally in voice coils in high frequency loudspeakers. We injected type EMG905 oil based ferrofluid into the magnetic gap of the double magnet 1.8”drive. As a result, the peak torque was increased by about 25%. The added conduction path for heat flow resulted in significantly lower (see Table 1).Upon injection, the ferrofluid neatly filled the magnetic gap, immersing most of the coil. After the ferrofluid was added, the actuator showed a noticeable attraction for the ends of its motion range without any applied current. The torque required to move the actuator from the limits was 0.7x10-3 Nm. This was due to the fact that at the extremes of motion, certain parts of the coil frame extended beyond the magnetic gap. Thus at the motion extreme, less ferrofluid was displaced from the gap,and the total system energy was reduced. In a future project, this effect could be eliminated by trimming the coil frame and or extending the magnet size slightly. ======================