projet BP-CHIPCON

Voici mon dernier projet. Il s’agit d’une console de jeux basée sur la carte blue pill avec une version personnelle de la machine virtuelle CHIP8. En fait la console supporte les modes SCHIP et BPCHIP qui est une variation personnelle de cette machine virtuelle. BPCHIP augmente la résolution à 180×112 pixels et ajoutes 16 couleurs alors que les consoles CHIP traditionnelles son monochrome.

Rappel historique

CHIP8 est une machine virtuelle conçue en 1978 pour l’ordinateur COSMAC VIP et qui permettait de créer des jeux pour cet ordinateur. Avec les années de nombreuses variations de cette machine virtuelle ont été créées. En autre Super CHIP plus communément appelé SCHIP qui a été créé pour fonctionner sur les calculatrices HP-48. Alors que CHIP8 avait une très faible résolution de 64×32 pixels SCHIP passait à 128×64 pixels.

Il existe aussi des émulateurs CHIP8, SCHIP et autres variantes qui fonctionnent sur le PC. J’ai moi-même créé un tel émulateur il y a quelques années. Ce projet ci est né suite à mes expérimentations pour créer un signal composite NTSC couleur sur un petit PIC 12F1572 (voir le projet https:/github.com/picatout/breakout_1572 pour plus d’information à ce sujet.)

Je voulais étendre cette expérience avec un microcontrôleur plus puissant. Quoi de mieux que le STM32F103C8T6 qu’on retrouve sur les cartes blue pill. Mais il faut hacker la carte elle même pour remplacer le cristal 8 Mhz par un cristal 14.318 Mhz qui est un multiple de la fréquence du signal chroma NTSC.

Le résultat est une console de jeux avec les caractéristiques suivantes:

  • sortie vidéo composite NTSC couleur
  • résolution graphique 180×112 pixels à 16 couleurs.
  • Supporte les binaires SCHIP 128X64 pixels monochrome.
  • Ma version personnelle BPCHIP 180×112 pixels 16 couleurs ajoute plusieurs codes opératoires à la machine virtuelle.
  • Sons augmentés. En plus du beep original des consoles CHIP8 permet de jouer 16 notes de la gamme tempérée. Il y a aussi un son bruit blanc.
  • J’ai créer 3 outils pour faciliter la création de jeux BPCHIP. l’assembleur bpcasm qui convertie les fichiers en binaires pour la VM BPCHIP. le programme cvt-chip permet de convertir les fichiers binaires BPCHIP en fichier source pour le langage C afin de les compiler avec le firmware de la console. Finalement le désassembleur bpcdasm permet de désassembler les fichiers binaires CHIP8 et SCHIP. Le fichier source résultant peut-être modifié et réassemblé avec bpcasm.

Pour plus d’information sur le projet consultez le dépôt suivant https://github.com/Picatout/bp-chipcon

De AM/FM à SW/FM

J’ai en ma possession un récepteur AM/FM de marque CENTRIOS modèle 121-9025. Au Québec la bande AM est pratiquement inoccupée car les diffuseurs ont tous migré vers la bande FM. Alors il m’est venu à l’idée que peut-être je pourrais modifier ce récepteur pour remplacer la bande AM par une bande SW. J’ai donc fait des recherches dans l’internet pour trouver le manuel de service du récepteur, sans succès. Mais j’ai découvert qu’en fait il s’agissait du même récepteur que le Sangean WR-1 et j’ai pu trouver le manuel de service de celui-là.

Un étude de la partie syntonisateur du récepteur m’a permis de déterminer que pour changer la bande AM en bande SW je n’avais qu’à modifier 2 bobines inductances dans le récepteur. Soit L1 et ANT1 qui est la bobine d’antenne. Je les ai encadrées en rouge sur l’image du circuit ci-dessous.


Super-hétérodyne

Ce récepteur est de type super-hétérodyne. Ce type de récepteur a été inventé pour améliorer la sélectivité, c’est à dire la capacité à séparer les stations les unes des autres, pour éviter d’entendre plusieurs stations en même temps. Je devrais d’abord expliquer ce qu’est un circuit accordé.

Circuit accordé

Dans un récepteur radio la sélection de la station à recevoir se fait à l’aide d’un circuit accordé constituée d’une inductance et d’un condensateur. La propriété d’un tel circuit est d’entrer en résonance à la fréquence pour laquelle il est accordé comme un diapason en quelque sorte. Dans l’image ci-haut nous avons dans le circuit d’antenne 4 condensateurs CT2,CV3,C24,C2P en parallèle avec la bobine ANT1. Ces 5 éléments forment ensemble le circuit accordé d’antenne et permettent de sélectionner la station. CV3 est un condensateur variable relié au bouton avant du récepteur qui permet de sélectionner la station. ANT1 est une bobine enroulée sur une ferrite qui sert d’antenne tel que montrée sur cette photo.

La fréquence d’accord d’un circuit accordé est calculée par la formule:

Fr=1/2*π*√(L*C)

Fr est la fréquence d’accord.

L est la valeur de ANT1 en Henry

C est la valeur équivalente des 4 condensateurs en Farad.


Sélectivité

Pour les basses fréquences un simple circuit accordé est suffisant pour séparer les stations mais plus la fréquence d’accord augmente plus la largeur de bande du filtre augmente. Cette largeur dépend d’un facteur qu’on appelle facteur Q . La bande passante est B=Fr/Q. On voit donc que pour un facteur Q donné plus Fr augmente plus B est large ce qui permet à plusieurs stations de passer. C’est pour régler ce problème de manque de sélectivité que le super-hétérodyne a été inventé.

L’idée est de justement réduire la fréquence auquel fonctionne le filtre. Si on prend 2 signaux de fréquences différentes et qu’on les multiplie ensemble on obtient 2 autres fréquences qui correspondent à la somme et la différence des 2 fréquences originales (je n’entrerais pas ici dans la théorie derrière cet énoncé). Dans un récepteur super-hétérodyne on utilise un oscillateur local qui fonctionne à une fréquence supérieur au circuit accordé de l’antenne. Sur la photo ci-haut cet oscillateur utilise les composants CT1,VC1,C45, C2P et L1 pour déterminer la fréquence de l’oscillateur local. VC1 est mécaniquement couplé à CV3 pour faire en sorte que la fréquence de l’oscillateur local varie avec le circuit d’antenne de sélection de la station. Cet oscillateur local fonctionne à une fréquence 460Khz supérieure à la fréquence du circuit d’antenne. De sorte que le produit des 2 fréquences donne une fréquence résultante, par la différence de 460Khz. Cette fréquence est appelée fréquence intermédiaire. Cette fréquence intermédiaire se retrouve à la broche 3 de IC2 et est filtrée par T5 et CF3 qui ensemble forme un filtre pour cette fréquence. Puisque ce filtre fonctionne à une fréquence beaucoup plus basse que celle de la station sélectionnée par le circuit d’antenne la sélectivité s’en trouve améliorée.

Changement de bande

J’en reviens donc à ma modification. En utilisant la formule mentionnée ci-haut pour le calcul de la fréquence d’accord j’ai pue déterminer les valeurs que devaient avoir ANT1 et L1 pour la réception entre 4Mhz et 10Mhz. Ceci correspondant à l’intervalle de fréquences où on retrouve la majorité des bandes HF de diffusion internationales

Pour ANT1 la modification a été simple, j’ai simplement débobiné le fil jusqu’à ce que j’obtienne la valeur d’inductance désirée mesurée avec un instrument conçu à cet effet. Le résultat est le suivant:

Comme on le voie il ne reste plus beaucoup de tours de fil. Pour L1 ça a été un peu plus compliqué. Il s’agit d’une petite inductance ajustable enfermée dans un boîtier métallique, encadrée en rouge sur la photo suivante.

Après avoir dé-souder le composant du circuit, j’ai sortie la bobine, je l’ai débobiné au complet avant de rebobiner avec la bonne valeur. Ce qui m’embêtait c’est que je ne savait pas trop à quel position je devait placer le point de connexion qui va à la broche 24 de IC2. Je m’y suis pris en faisant de L1 un transformateur plutôt qu’une bobine avec un TAP (désolé pour l’anglicisme) comme indiqué sur la schématique. J’ai donc bobiné en premier le primaire avec la valeur requise pour l’accord désirée selon mes calculs. Ensuite j’ai bobiné quelques tours par dessus pour former le secondaire qui permet la connexion de rétro-action pour l’oscillateur. J’avais des doutes mais j’ai été chanceux ça a fonctionné du premier coup.

Ajustement de l’oscillateur local

Il ne me restait plus qu’à ajuster la fréquence de l’oscillateur local mais pour ça j’avais besoin d’un générateur radio-fréquence, ce que je n’ai pas. Petit hack, avec un PIC pour lui faire générer une fréquence de 4.57Mhz modulée à 1Khz. Comme le PIC génère des ondes rectangulaires qui contiennent beaucoup d’harmoniques. Je pouvais recevoir la signal à 4.57Mhz et à la deuxième harmonique 9.14Mhz. Après ajustement, le récepteur est maintenant accordable entre 4.3 et 10Mhz. Je peu donc recevoir les bandes de 31,41,49 et 60 mètres.

Un problème d’image

Si le principe du super-hétérodyne règle le problème de la sélectivité un autre problème se présente. Celui-de la réjection de l’image. Comme je l’ai écris le produit de l’oscillateur local avec la fréquence de la station produit une somme et une différence. Normalement le poste est conçu pour recevoir la station dont la fréquence est plus basse que l’oscillateur local avec une différence égale à la fréquence intermédiaire. Mais s’il y a une autre station qui elle se trouve à 460Khz au dessus de l’oscillateur local le battement des 2 fréquences produit aussi une fréquence à 460Khz donc le récepteur sera incapable de séparer les 2 stations. Et c’est ce qui arrive avec mon récepteur modifié. Le problème est que la bande passante du circuit d’antenne est trop large pour rejeter la fréquence image. Ce qui veut dire que le facteur Q du circuit d’antenne est faible. Cette bobine d’antenne au départ a été conçue pour la bande de 530 à 1700Khz et je l’ai modifiée pour qu’elle fonctionne maintenant de 4.3 à 10Mhz. Le type de ferrite et la façon dont le fil est bobiné sur celle-ci a un impact sur le facteur Q . De toute évidence mon simple dé-bobinage de l’inductance d’antenne est loin de la solution idéale.

De plus à des fréquence supérieures à 2Mhz il est difficile de rejeter la fréquence image en utilisant une fréquence intermédiaire de seulement 460Khz. Une solution souvent utilisée est la double conversion hétérodyne. Ça consiste à faire une première conversion à une fréquence intermédiaire suffisamment élevée pour rejeté la fréquence image, par exemple on peut choisir 10Mhz comme première fréquence intermédiaire ensuite un deuxième hétérodyne avec une fréquence intermédiaire de 460Khz est utilisée pour améliorer la sélectivité.


jeu breakout sur PIC12F1572

Voici mon dernier projet. j’ai réalisé le jeu breakout

. Il s’agit d’un jeu d’arcade datant de 1976. Mon objectif était de réaliser ce projet avec un minimum de moyen matériel. Le circuit ne contient que 2 composants actifs, soit le MCU lui-même et un oscillateur à cristal externe qui était nécessaire pour générer une fréquence chroma stable. La majorité des composants sont des résistances et capacitances.

Pour plus d’information sur le projet consultez le dépôt github

Le déclin de l’empire Américain.

A vouloir sauver sur les coûts de production les U.S.A. se sont placés dans une situation de vulnérabilité par rapport à la Chine avec laquelle ils livrent une guerre commerciale en ce moment. En effet en transférant autant de capacité de production en Chine ils ont perdu la leur. Voici un bel exemple de ce que j’avance: A Tiny Screw Shows Why iPhones Won’t Be ‘Assembled in U.S.A.’
C’est ce qu’on appelle se tirer dans le pied.

sans MCU

AVERTISSEMENT: Ce projet ne contient aucun MCU ni OGM.

Battement cardiaque

Il est simple de produire avec un µC un effet de battement cardiaque avec une DEL. Il suffit d’utiliser un périphérique PWM pour générer une fréquence entre 100 et 200Hertz et de modifier le rapport cyclique de 0% à 100% progressivement pour ensuite redescendre vers 0% et ceci en boucle. Le rythme cardiaque étant déterminé par la vitesse à laquelle le rapport cyclique est modifié. On peut aussi faire ça sur un PIC10F200 qui n’a pas de PWM par simulation logicielle, c’est pas trop compliqué.

Minuterie 555

La minuterie 555 est un petit circuit intégré qui a été mis en marché en 1971 et qui est toujours d’actualité. Rares sont les C.I. de cette époque qui ont survécus jusqu’à aujourd’hui. Le 555 est un des plus grand succès commercial de l’histoire de l’électronique. Aujourd’hui il existe des versions CMOS qui peuvent fonctionner jusqu’à 2 Mégahertz comme c’est le cas du TLC555 que j’ai utilisé pour ce projet.

Il s’agit simplement d’une démonstration de l’effet heart beat réalisé sans µC. Il faut 2 TLC555 par contre.

schématique

Comment ça marche

On a 2 oscillateurs qui produisent une onde carrée sur leur sortie à la broche 3. 2 DELs sont branchées entre les sorties des 2 oscillateurs. D1 allume lorsque la sortie de U2 est à Vdd et celle de U1 à zéro volt. Pour D2 c’est l’inverse qui est vrai.

Imaginez que les 2 oscillateurs fonctionnent exactement à la même fréquence. Si les 2 sorties sont en phase les DELs seront toujours éteintes. Par contre si elles sont en opposition de phase les DELs allumeront en alternance.

Mais que ce passe-t’il si on ajuste RV1 pour que la fréquence de U2 soit légèrement différente de celle de U1? Leur cycle de se suivent plus. Il y a un décalage progressif entre les 2 ondes. La portion de cycle ou les 2 signaux sont en opposition de phase varie continuellement. Donc le temps que les 2 DELs allument est une fraction totale du cycle comme s’il s’agissait d’un PWM dont on fait varier le rapport-cyclique.

La fréquence des oscillateurs étant réglée à environ 300 hertz, notre œil ne perçoit pas le clignotement qui est trop rapide. Il intègre plutôt la luminosité comme une intensité moyenne et cette moyenne varie à la fréquence de


Fhb=|Fosc1-Fosc2|


Fhb fréquence de battement des DELs.
Fos1 fréquence générée par U1
Fos2 fréquence générée par U2

La différence de fréquence entre les 2 oscillateurs correspond à la fréquence cardiaque des DELs qui est la même pour les 2.

Dans le vidéo suivant je manipule RV1 pour modifier la fréquence de U2 et on peut constater l’influence sur le rythme cardiaque.

sculpture

Un coup parti pourquoi se gêner. Comme vous l’avez constater dans le vidéo j’ai fabriquer une petite sculpture avec ce projet pour la soumettre au concours de sculpture électronique de hackaday.

Lien

Pour voir d’autre photos de cette sculpture suivez ce lien.

toile d’araignée musicale.

Comme je complétais mon article précédent sur ce blog le site hackaday lançais un concours de sculptures électroniques. J’ai décidé d’y participer en continuant sur ma lancé de boite à musique. J’ai baptisé mon projet music from the web. Ceci est une présentation en français de ce projet.

Music from the web

Dans l’article précédent je présentait une boite à musique réalisée d’abord avec un PIC10F202 et ensuite avec un PIC10F322. Après j’ai songé à faire la même chose avec un PIC12F1572. Et c’est à ce moment que l’annonce du concours a été publiée. Bien que je n’ai aucune prétention artistique je me suis dis que ça ne coûtait rien de tenter ma chance. Et je ne sais trop comment l’idée d’une toile d’araignée montée sur le cône d’un haut-parleur m’est venue.

PIC12F1572

Parlons d’abord du PIC12F1572. Ce petit µC est disponible en format DIP-8 mais aussi SOIC-8. 8 broches comme un araignée a 8 pattes. C’est peut-être de cette similitude que m’est venue l’idée de l’araignée au centre de sa toile. Ce qui est intéressant avec ce petit µC se sont ses 3 périphériques PWM de 16 bits. Il est parfait pour contrôler une LED RGB. Mais on peut aussi l’utiliser pour faire de la musique. Dans ce projet j’utilise 1 PWM pour générer les notes musicales et 1 autre pour contrôler l’enveloppe. Comme la boite à musique n’utilise que 2 broches de sorties je me demandais quoi faire avec les autres. J’ai décidé d’utiliser le 3ième PWM pour générer une effet battement de cœur avec une petite DEL montée sur le dos du PIC10F1572 en centre de la toile. Cette DEL pulse comme un coeur qui bas au rythme de la musique. Mais il restait encore 2 broches inutilisées. Le PIC12F1572 possède aussi un périphérique CWG (Complementary Waveform Generator). Ce périphérique prend un signal rectangulaire et produits 2 signaux en opposition de phase. J’ai décidé de le mettre à profit en installant 2 séries de 4 DELs sur la circonférence du haut-parleur. Une série de DEL rouges et une autre de vertes en alternance. Le CWG est alimenté par le PWM qui contrôle l’enveloppe du son. On a donc que les DELs vertes allument en alternance avec les rouges au rythme de chaque note jouée. Le PIC12F1572 possède 2K de mémoire flash et le logiciel n’occupe qu’environ 20% de cette mémoire ce qui laisse beaucoup d’espace pour les mélodies. La boite à musique contient 22 mélodies, qui sont jouées en séquence chaque fois qu’on presse le bouton RESET.

schématique

schématique

réalisation

sculpture complétée

vidéo

lien

source du projet. Comme il s’agissait d’une soumission pour un site anglophone le readme.md est en anglais.