Le capteur capacitif QT110

La vidéo : 3 réglages différents du QT110 (DC Out, Toggle et Pulse)

Le montage :

Concernant les composants périphériques au QT110 :
Cx est en général de l’ordre de 10 picofarads. Cs doit être 1000 fois plus grand que Cx, soit 10 nanofarads. Rs est à 470 kilo-ohms. Re doit être le plus grand possible tout en préservant la sensibilité du capteur (sur mon montage, Re est à 1 kilo-ohms).

Concernant le QT110 :
La patte 1 est reliée au +5V de la carte Arduino.
La patte 2 est reliée à l’entrée analogique 0 de la carte Arduino.
Les pattes 3 et 4 sont reliées soit à +5V, soit à Gnd sur la carte Arduino, selon la manière dont on souhaite faire réagir le capteur (voir le tableau ci-dessous).
La patte 5 n’est pas connectée (si on choisit un gain maximum).
Les pattes 6 et 7 sont reliées entre elles par l’intermédiaire du condensateur Cs en parallèle avec la résistance Rs.
La patte 7 est reliée à la résistance Re en série avec l’électrode de détection.
La patte 8 est reliée à Gnd sur la carte Arduino.

DC Out : Quand on s’approche de l’électrode, la DEL verte s’éteint et la rouge s’allume. On repasse au vert dès qu’on s’éloigne de l’électrode. Par contre si le contact se prolonge, on reste au rouge près de 10 secondes (ou 60 secondes) avant de basculer de nouveau au vert.
Toggle : La couleur change à chaque nouvelle approche de l’électrode. Elle ne change pas quand on s’en éloigne.
Pulse : Quand on s’approche de l’électrode, la DEL verte s’éteint et la rouge s’allume une fraction de seconde, puis on bascule tout de suite au vert, même si le contact se prolonge.

Concernant les DEL rouge et verte :
Elles sont chacune mises en série avec une résistance de 330 ohms, puis reliées sur les sorties digitales 2 et 3 de la carte Arduino.

Le code Arduino :

/////////////////////////////////////////////////////////////////
/*
  Capteur capacitif QT110
*/
/////////////////////////////////////////////////////////////////

int ledrPin = 2;  // LED rouge sur la sortie digitale 2.
int ledvPin = 3;  // LED verte sur la sortie digitale 3.
int aPin = 0;     // Patte 2 du QT110 sur l'entrée analogique 0.
int value = 0;    // Variable de stockage de la valeur mesurée.

void setup()
{
  pinMode(ledrPin, OUTPUT);  // Declare the ledrPin as an OUTPUT.
  pinMode(ledvPin, OUTPUT);  // Declare the ledvPin as an OUTPUT.
  pinMode(aPin, INPUT);
}

void loop()
{
  value = analogRead(aPin);  // Read the input pin.
  
  if (value >= 512) digitalWrite(ledrPin, LOW);
  else digitalWrite(ledrPin, HIGH);
  if (value < 512) digitalWrite(ledvPin, LOW);
  else digitalWrite(ledvPin, HIGH);
  
  delay(20);  // Wait 20 milliseconds.
}

/////////////////////////////////////////////////////////////////

Etude d’un accéléromètre 2D

Il s’agit de la remise en ligne d’un article que j’ai écrit en 2012.

La vidéo :

Le matériel et les logiciels utilisés :

Une carte Arduino Duemilanove.
Un shield avec plaque d’essais.
Des fils de diamètre 0,5 mm.
Un accéléromètre DE-ACCM2G de DimensionEngineering (construit autour de l’ADXL322).
Le logiciel Arduino.
Le logiciel Processing.

Etape 1 : L’accéléromètre et l’interfaçage avec la carte Arduino

La patte Vcc est à connecter à la borne 5V de la carte Arduino (au niveau de POWER). La patte Ground est à connecter à la borne Gnd de la carte Arduino (au niveau de POWER). La patte X output est à connecter à la borne analogique 1 par exemple (au niveau de ANALOG IN). La patte Y output est à connecter à la borne analogique 2 par exemple (au niveau de ANALOG IN).

Etape 2 : La programmation de la carte avec le logiciel Arduino

Sur GitHub

Etape 3 : L’interfaçage avec le logiciel Processing

Sur GitHub

Etape 4 : A l’écran


Remarques :

Le capteur étudié ici n’a pas une réponse linéaire quand il est utilisé en inclinomètre. J’ai donc décidé de découper la courbe de réponse en 18 morceaux (10° chacun) et de les approcher par des fonctions affines. Les animations à l’écran, visuellement très satisfaisantes, montrent que cette approche est pertinente.

Poussons l’étude un peu plus loin : Les deux courbes ci-dessus font penser à la représentation graphique de la fonction Arc sinus ; nous allons donc prendre le sinus de la variable degY (ou degX) afin d’essayer d’obtenir une droite :

Bingo ! Nous avons une belle fonction affine. Nous allons donc pouvoir calculer facilement des accélérations à partir des mesures reçues par le capteur. Reste à faire la même chose avec X et degX. Nous obtenons ainsi :

a(X) = (0,0067560184 * X – 3,4804161956) * g
a(Y) = (0,0067732268 * Y – 3,4058636402) * g

Etape 5 : En voiture

On embarque la carte Arduino et l’ordinateur dans une voiture, l’axe Y du capteur étant orienté dans le sens de la marche et le capteur posé à plat. Les données sont enregistrées en temps réel dans le fichier « données.txt » dans le répertoire du programme. En utilisant les fonctions affines déterminées ci dessus, nous pouvons calculer l’accélération de la voiture selon l’axe X ou Y du capteur.

Hack d’un clavier avec port PS/2

L’objectif :

Le but est de réaliser une matrice de clavier relativement grande qui utilise le moins d’entrées / sorties possible sur une carte Arduino par exemple. Le port PS/2 d’un clavier de PC n’utilise que 4 broches sur les 6 de la prise correspondante (+5V, GND, CLK, DATA). Deux de ces lignes (CLK et DATA) sont suffisantes pour faire communiquer un clavier de 105 touches avec un PC. Je vais donc m’atteler à en comprendre le fonctionnement afin de pouvoir réutiliser l’encodeur du clavier.

Les pièces maîtresses :

L’analyse :

Étude des pistes du clavier

Data sheets

DatasheetCatalog.com
DatasheetsPDF.com
The Datasheet Archive


MICROCONTRÔLEURS

Microchip ATtiny 45 – 8 broches
Microchip ATtiny 85 – 8 broches
Microchip ATtiny 44 – 14 broches
Microchip ATmega328P – 28 broches
Microchip ATmega644P – 40 broches
Microchip ATmega1284P – 40 broches

MICROPROCESSEURS

Intel 80C32
Zilog Z80

CIRCUITS LOGIQUES TTL SÉRIE 7400 (4,75 V à 5,25 V)

74LS00 – 4 portes NON-ET à 2 entrées
74LS04 – 6 portes inverseuses NON
74LS08 – 4 portes ET à 2 entrées
74LS138 – Décodeur / Démultiplexeur 1 parmi 8
74LS193 – Compteur / Décompteur binaire 4 bits

CIRCUITS LOGIQUES CMOS SÉRIE HCT (4,5 V à 5,5 V – Compatible TTL)

74HCT151 – Multiplexeur 8 entrées

CIRCUITS LOGIQUES CMOS SÉRIE HC (2 V à 6 V)

74HC08 – 4 portes ET à 2 entrées
74HC126 – 4 buffers / drivers de ligne à 3 états
74HC540 – 8 buffers / drivers de ligne à 3 états, inverseurs
74HC4040 – Compteur binaire à 12 étages

CIRCUITS LOGIQUES CMOS SÉRIE 4000 (3 V à 15 V)

4001 – 4 portes NON-OU à 2 entrées
4010 – 6 buffers non inverseurs
4013 – 2 bascules D
4021 – Registre à décalage 8 bits
4023 – 3 portes NON-ET à 3 entrées
4024 – Compteur binaire à 7 étages
4027 – 2 bascules JK
4028 – Décodeur 4 bits BCD 10 voies
4029 – Compteur / Décompteur binaire 4 bits / BCD avec présélection
4030 – 4 portes OU exclusif à 2 entrées
4051 – Multiplexeur / Démultiplexeur analogique 8 canaux
4067 – Multiplexeur / Démultiplexeur analogique 16 canaux
4071 – 4 portes OU à 2 entrées
4081 – 4 portes ET à 2 entrées
4093 – 4 portes logiques NON-ET à 2 entrées avec trigger de Schmitt
4098 – 2 multivibrateurs monostables
4099 – Bascule adressable 8 bits
4510 – Compteur / Décompteur BCD avec présélection
40106 – 6 portes NON à trigger de Schmitt (bascule à seuil)

CIRCUITS INTÉGRÉS LINÉAIRES

ADC0820 – Convertisseur analogique / numérique 8 bits
DAC0802 – Convertisseur numérique / analogique 8 bits
DS1307 – Horloge temps réel sur bus I2C
DS1337 – Horloge temps réel sur bus I2C avec 2 alarmes paramétrables
LM324N – 4 amplificateurs opérationnels monotension
LM358N – 2 amplificateurs opérationnels monotension
MAX7219 – Pilote d’affichage à leds 8 digits (interface série)
MC1741 – Amplificateur opérationnel
NE555 – Temporisateur universel
PCF8574AP – Interface bus I2C / parallèle 8 bits
PCF8574P – Interface bus I2C / parallèle 8 bits

RÉGULATEURS

LM1085IT-3.3
LM78L05ACZ
L4885CV
L78S05CV
L7805CV
L7809CV
TS7806CZ

TRANSISTORS

BC108 – Transistor bipolaire NPN
BC108A – Transistor bipolaire NPN
BC547C – Transistor bipolaire NPN
IRFZ48N – Transistor MOSFET, canal N
TIP122 – Transistor bipolaire NPN
TIP31C – Transistor bipolaire NPN
2N2222A – Transistor bipolaire NPN
2N2904A – Transistor bipolaire PNP

DIODES

BZX85C 5V1 – Diode Zener 5,1 V
1N3828A – Diode Zener 6,2 V
1N4007 – Diode de redressement
1N4148 – Diode de signal
1N5404 – Diode de redressement

OPTOÉLECTRONIQUE

Afficheur LCD alphanumérique 2 x 16 caractères DEM 16216 SGH
Afficheur LCD graphique 128×64 points ST 7920
Afficheur LED 7 segments SA39-11EWA
Matrice 8×8 à leds rouges ELM-2881SURWA/S530-A2