Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 

Portail coulissant automatique et picaxe

 
 
Ce projet est issu d'une discussion assez longue, sur un forum d'électronique que vous pouvez suivre ici.

 
Le cahier des charges:
  • Automatisation d'un portail modèle réduit par micro processeur Picaxe.
  • Commande par poussoir donnant la séquence: Ouverture/Arrêt/Fermeture/Arrêt/Ouverture.
  • Fermeture automatique après temporisation.
  • Réouverture automatique en cas de détection d'obstacle par cellule infra rouge.
  • Réouverture automatique en cas de freinage moteur avec sensibilité réglable.
  • Signalisation lumineuse du mouvement par voyant clignotant.
  • Le fonctionnement manuel est prioritaire sur le fonctionnement automatique.

Le schéma:

 


Commentaires:

Le microprocesseur est un 20M2, il se programme sur site avec un PC et un câble série ou un cordon adaptateur USB.
Le moteur est commandé par deux relais miniatures DIL16 6 volts.
Deux "fin de course" NO, un contact momentané suffit à arrêter le moteur.

La commande par poussoir génère une interruption et un changement l'état à tout moment. La commande manuelle est prioritaire sur l'automatisme. Elle modifie l'état suivant une séquence prédéfinie:
Ouverture / Arret / fermeture / Arret / Ouverture
Sans intervention manuelle, la fermeture est automatique.

La barrière IR est composée d'une diode émettrice IR333C et d'un capteur TSOP34838, accordé sur 38kHz.
La résistance R, dans le retour à la masse du moteur mesure le courant, elle doit être ajustée pour relever une tension d'au moins 100 mV en fonctionnement normal. Le seuil de sensibilité dépend du moteur utilisé, il est réglé par un potentiomètre.
Si aucun obstacle n'est détecté par la barrière, le portail se referme automatiquement après une temporisation.
Deux options de temporisation:
(le programme accepte les deux options)
  • inter + 10k (en rouge sur le schéma) Inter fermé, la temporisation est fixée par le programme. Inter ouvert, pas de fermeture automatique.
  • potentiomètre (en noir).
Curseur à la masse (0 volt), idem inter fermé, temporisation fixe.
Curseur à 5 volt, idem inter ouvert, pas de temporisation.
Entre les deux, temporisation réglable de 0,5 à 20 secondes.

Trois alimentations régulées à partir d'une source 12 volts continus:
5 volts pour le picaxe
6 volts pour les relais
Alimentation tension variable pour le moteur.

Le programme:


    ' Gestion de portail (Mag1 21 02 2013)
    ' Gestion manuelle par poussoir commande séq : ouverture/arrêt/fermeture/arrêt/
    ' Fermeture automatique temporisée
    ' Réouverture auto en cas d'obstacle par barrière IR
    ' Réouverture auto en cas de surcharge moteur (seuil réglable)
    ' Il y a deux programmes en temps partagé
    ' La commande est gérée par interruption

    #picaxe 20M2 'directive spécification picaxe 20M2
    
start0: 'Premier programme en temps partagé

'****** Nomination des ports entrées **********************
    symbol cmd         = pinC.5    'commande sur pin interruption
    symbol fcf         = pinC.6    'fin de course fermeture
    symbol fco         = pinC.7    'fin de course ouverture    
    symbol sensib    = B.5        'pot lecture seuil sensibilité
    symbol courmot    = B.6        'lecture courant moteur
    symbol alert    = pinC.0    'lecture état barrière IR
    symbol lecpot    = C.1        'ADC ou Fixe 1 = fermeture auto ; 0 = manuelle
    
'******* Nomination des ports sorties *******************    
    symbol LedR        = B.0        'sortie flash    '
    symbol EmetIR    = B.1        'sortie Led IR
    symbol ouv        = B.2        'commande moteur ouverture
    symbol ferm        = B.3        'commande moteur fermeture    
    
'******* Nomination des variables ***************    
'******** Variables type bit (1 bit ) ************
    symbol mouv        = bit0    'bit état "en mouvement" pour le flash
    symbol souvre    = bit1    'mémo état précédent (1=ouverture; 0=fermeture)
    symbol obst        = bit2    'mémo détection obstacle
    symbol fermauto    = bit3    'mémo fermauto ou manuel    
'******** Variables type byte (1 octet) **************
    symbol etat        = b1        'état en cours 1=ouverture; 2=fermeture; 3= arret
    symbol seuil    = b2        'valeur seuil sensib
    symbol courant    = b3        'mesure du courant
'********* Variables type word (2 octets) ****************
    symbol tempo    = w13        'lecture temporisation
        
'**********************************************************
    'do:loop while cmd=0         'attente pour réglage ADC sur simulateur
        
'******** Initialisation variables ********    
    low ouv: low ferm: low ledR    
    etat =3                'etat arret à la mise sous tension
    souvre=0                'memo en fermeture : la 1ère commande sera ouverture

        
    pwmout EmetIR, 104, 211 'activation Emetteur IR PWM 38 kHz à 16MHz
        
'******** Interruption sur C.5 niveau haut *********    
    setint %00100000 ,%00100000    

'******** Boucle principale ********        
    Do
    
' **************** Réglage temporisation     
        readadc10 lecpot,tempo    'lecture pot. tempo. Donne un nombre de 0 à 1023
        if tempo > 1000 then    'pot max, on passe en manuel ou pas de pot C.1 à 5 v
            fermauto=0        'fermauto =0 càd en manuel        
        elseif tempo <20 then    'automatic sans pot C.1 est à 0
            fermauto=1        'fermauto =1 càd automatique
            tempo=4000        'tempo fixe 4 s
        else                 'pot position médiane
            fermauto=1        'donc automatique, avec
            tempo= 20*tempo    'réglage tempo 0,4s à 20s
        endif
        
' ***************    Réglage sensibilité obstacle
        readadc sensib, seuil    'lecture du seuil    moteur
        
' ***************
    
        select  etat    'aiguillage suivant variable "etat= 1, 2, 3, 4"
        
        case 1         ' etat =1 = ouverture
            mouv=1    'pour le flash
            souvre=1    'mémo état
            obst=0    'reset mémo obstacle IR
            
            do        'boucle ouverture
                low ferm : high ouv        'positionnement des relais ouverture                
            loop while fco=0 and etat=1        'tant que fco ouvert et pas de changementd'état        
            if etat<>3 then                'si arret par commande, on y reste
                etat=4                'sinon on passe en etat =4 : fermeture auto temporisé
            endif
                    
        case 2         ' état = 2 = fermeture        
            mouv=1    'pour le flash
            souvre=0    'mémo état            
            do        'boucle fermeture
                readadc courmot, courant     'lecture courant moteur
                if courant > seuil then        'si dépassemnt seuil
                        obst=1        'mémo détect obstacle
                        etat=1        'positionnement état ouverture                    
                endif
                
                if alert=1 then        'détection alert IR
                        etat=1    'position état ouverture                        
                endif
                
                low ouv: high ferm    'on ferme!
            loop while fcf=0 and etat=2    'tant que fcf ouvert et pas de changement d'état
            
            if alert=0 and obst =0    then    'pas de problèmes ?                    
                     etat =3        'alors,positionnement état arret                        
            endif                                
        
        case 3        ' état =3 = arret ;flash OFF        
            low ouv : low ferm    'arret moteur        
            mouv=0            'arret du flash
            
        case 4        'état = 4 = fermeture automatique ; flash ON
            low ouv : low ferm            'arret moteur        
            do                        'boucle temporisation mini 1 fois
                pause tempo                'attente
            loop while alert=1 and etat=4    ' si obstable IR et pas changement état, on boucle    
            if fermauto =1 and etat=4 then    'si automatique =1 et etat 4
                etat=2                'fermeture auto
                        else            'sinon                            
                etat=3                'arret
            endif                        'fin de if
        end select                        'fin de select
    loop                                'fin de boncle principale

interrupt:    'Ah, on a appuyé sur le bouton !!

    do : loop while cmd=1 'attente relachement poussoir
    
    select etat
    
        case 1,2,4        'on est en état 1,2 ou 4    
            etat = 3        'alors passage à l'état 3 (arret)
                    
        case 3         'on est à l'arret
            if souvre=1 then     ' état précédent= ouverure
                    etat=2    ' alors on passe en fermeture
            else
                    etat=1    ' sinon, c'est le contraire
            endif        
    end select
    
    setint %00100000 ,%00100000    'reset de l'interruption
    
    return    
' ***************************************************************************    
start1:    'Second programme en temps partagé uniquement pour le flash

    Do
    if mouv=1 then    'si mouvement
        high ledR    'ça
        pause 500    'cli
        low ledR    'gno
        pause 500    'te !
    endif
    loop

 
La réalisation.
Le circuit proposé tient sur une plaquette véroboard de 5 x 10 cm.
A ce propos, le logiciel gratuit TCI 4 pour la réalisation de circuits imprimés peut aider à la réalisation de circuit sur véroboard et la réalisation du circuit est décrite dans la page
"circuit veroboad avec TCI4".



Et la réalisation du demandeur, avec en prime une démonstration du réglage de la sensibilité moteur:


 
 
 

 



Créé avec Créer un site
Créer un site