Générateur de signaux Arduino (25 / 29 étapes)

Etape 25 : Firmware

Télécharger le code au bas de cette étape sur l’Arduino.  Le code utilise un timer interrupt à une fréquence de 100kHz pour envoyer de nouvelles données à la DAC.  Le reste du code surveille l’état des touches et boutons et ajuste en conséquence les variables.  Puisque les interruptions se produisent à une telle fréquence haute, j’ai dû garder la routine d’interruption, le morceau de code encapsulé dans le {ISR(TIMER1_COMPA_vect)} le plus court possible. Opérations intensives de temps comme des opérations mathématiques avec flotteurs et en utilisant la fonction sin() prennent trop de temps.  J’ai utilisé plusieurs travaux autour d’obtenir par la présente :

Pour le triangle et j’ai vu, j’ai créé les variables sawByte, triByte, sawInc et triInc.  Chaque fois que la fréquence a changé j’ai calculé le montant qu’aurait la fonction triangle et j’ai vu sur incrément à un taux d’échantillonnage de 100kHz :

triInc = 511/période ;
Si (triInc == 0) {}
triInc = 1 ;
}
sawInc = 255/période ;
Si (sawInc == 0) {}
sawInc = 1 ;
}

puis tout le nécessaire à faire dans la routine d’interruption a été quelques calculs simples :

cas 1: / / triangle
if((period-t) > t) ;
Si (t == 0) {}
triByte = 0 ;
}
else {}
triByte += triInc ;
}
}
else {}
triByte = triInc ;
}
Si (triByte > 255) {}
triByte = 255 ;
}
ElseIf (triByte < 0) {}
triByte = 0 ;
}
onde = triByte ;
rupture ;

case 2: / / scie
Si (t = 0) {}
sawByte = 0 ;
}
else {}
sawByte += sawInc ;
}
onde = sawByte ;
rupture ;

Pour la fonction sinus, j’ai écrit un simple python script qui génère les 20000 valeurs de 127+127sin(x) pour un cycle complet :

importer des mathématiques

pour x dans l’intervalle (0, 20000) :
impression str(int(127+127*math.sin(2*math.pi*x*0.00005)),)+str(","),

J’ai stocké ce tableau dans la mémoire de l’Arduino appelé [sine20000] et a rappelé les valeurs que je devais envoyer à la DAC.  C’est beaucoup plus rapide que le calcul des valeurs individuellement.

Articles Liés

Bouclier de générateur d’onde Arduino

Bouclier de générateur d’onde Arduino

Générateurs de signaux (également appelés générateurs de fonction) sont utiles pour tester et déboguer des circuits. Ils permet de tester la bande passante des composants électroniques comme les amplis op et capteurs ou pour caractériser et dépanner
Arduino + AD9850 30MHZ DDS générateur de Signal à 12$

Arduino + AD9850 30MHZ DDS générateur de Signal à 12$

un Signal de précession generator est très simple et abordable font à l'aide d'un synthétiseur d'arduino et dds (ad9850). Premier plus petit portable générateur de signaux son monde construire.Vous pouvez faire décent 0-30 MHZ fréquence Signal genera
Générateur de signaux de Arduino de résistance 10

Générateur de signaux de Arduino de résistance 10

Si vous avez un Arduino UNO, ce projet est pratiquement gratuit !Il fait également un grand projet Arduino Nano.Ce que vous avez besoin (uniquement les composants passifs) :Seulement 10 résistancesCondensateur d'une filtrageVous recevrez :Un générate
Générateur de signaux iOS contrôlé par Arduino

Générateur de signaux iOS contrôlé par Arduino

Ce générateur de signaux est basé sur le travail par Amanda Ghassaei. Générateurs de signaux (ou des générateurs de fonctions) sont utilisés pour tester et déboguer des circuits. réponse en fréquence par exemple de l'ampli op ou des capteurs. Ce géné
0-40 Mhz, générateur de signal sinusoïdal pour 25 $.

0-40 Mhz, générateur de signal sinusoïdal pour 25 $.

Récemment certains conseils très bon marchés ($4-6) viennent de Chine, contenant une puce appelée le AD9850 qui est un générateur de signal sinusoïdal de synthèse numérique directe.Avec seulement 4 fils de commande, nous pouvons contrôler le Conseil
OscilloPhone : Utilisez votre Smartphone comme un Oscilloscope / générateur de Signal

OscilloPhone : Utilisez votre Smartphone comme un Oscilloscope / générateur de Signal

OscilloPhone : Utilisez votre Smartphone comme un Oscilloscope / générateur de signauxpar Loann BOUDIN | 2015Oscilloscopes et générateurs de signaux sont deux dispositifs électroniques essentiels pour créer et tester les circuits électroniques. Malhe
Le générateur de signaux arbitraires Atmel Xmega USB/série

Le générateur de signaux arbitraires Atmel Xmega USB/série

cette instructable vous guide à travers la programmation et à l'aide de la carte d'évaluation de Boston Xmega Android pour travailler comme un générateur de signaux arbitraires simple en profitant de l'intégré 12 bit DAC et le contrôleur DMA haute vi
Générateur de Signal d’onde sinusoïdale modifiée.

Générateur de Signal d’onde sinusoïdale modifiée.

En raison d'une panne d'ordinateur et des fichiers perdus, j'ai dû refaire ce projet.Je me suis inspiré pour concevoir ce circuit en treize ans, deux mille watts, puissance industrielle onduleur circuits imprimés ; J'ai acheté pour dix dollars. J'ai
Générateur de signaux faible coût (0 - 20MHz)

Générateur de signaux faible coût (0 - 20MHz)

ABSTRATHCe projet vient de la nécessité d'avoir un générateur d'ondes avec une bande passante de plus de 10 Mhz et une distorsion harmonique inférieur à 1 %, tout cela avec un prix modique.Ce document décrit une conception d'un générateur d'ondes ave
Oscilloscope USB avec le générateur de signaux

Oscilloscope USB avec le générateur de signaux

Bonjour,dans ce projet, je veux vous montrer comment faire un Oscilloscope USB simple et bon marché.Spécifications :Prix : 20$Fréquence: 2-20000HZRésolution : 16 bitsPlage de tension: +-7V / avec sonde +-70VCanaux: 2Mode X-YGénérateur de signal : sin
Générateur de signaux arbitraires, pour environ 20$

Générateur de signaux arbitraires, pour environ 20$

un générateur de signaux arbitraires (AWG) est une pièce utile mais souvent cher du matériel d'essai (ebay pour rire). Utilisez-le pour déterminer la réponse en fréquence composante, de générer des signaux porteurs, comme un RLC si vous avez une port
Trois en un: IC / testeur de continuité, générateur de signaux &

Trois en un: IC / testeur de continuité, générateur de signaux &

lors de la construction, avec des circuits intégrés, la plupart d'entre nous passent beaucoup de temps de dépannage.  Dans ces circonstances (ainsi que d'autres), il est bon de savoir que les puces fonctionnent.  Ce testeur vérifie 4 différents types
Facile Atmel Xmega Sine Wave / générateur de signaux

Facile Atmel Xmega Sine Wave / générateur de signaux

c'est comment vous pouvez utiliser un des panneaux d'évaluation du BostonAndroid.com Xmega (20$) pour créer un générateur de forme d'onde sinusoïdale réglable simple avec une résolution de 12 bits et capable de produire des fréquences de 125Hz - 20KH
Contrôler le générateur de signaux analogiques Discovery™ dans LabVIEW

Contrôler le générateur de signaux analogiques Discovery™ dans LabVIEW

L'objectif de ce projet est de vous apprendre à contrôler la découverte analogique avec LabVIEW. En particulier, ce projet démontrera comment contrôler le générateur de forme d'ondes découvertes analogiques. Vous pouvez contrôler la fréquence et l'am