Дата на обновяване:02.11.2012

   ПЧЕЛАР / ЕЛЕКТРОНЧИК - пробвай-сам.bg

     Страница за пчеларство, пчеларски и ел.  разработки, представени като статии

Комютърът на пчелина | Нестандартни кошери | Пчеларски сайтове | Пчеларски инвентар | Размисли и идеи за пчеларството Физиотерапия, Апитерапия, Фитотерапия | Книги, Списания, РС, Интернет |  Пчеларски технологии |  Видове мед  | Пчеларски хумор

Сезонни и месечни задължения на пчеларя | Пчеларски статии на руски език | Малки Oбяви свързани с пчеларството

Информация, която е полезна за начинаещия пчелар | Използване на автомобила ... не само за предвижване - видеоклипове

 

 

 
Информация  от  ОБЛАСТЕН  ПЧЕЛАРСКИ  СЪЮЗ  - ПЛЕВЕН

 

 

Полезна и забавна информация за начинаещи с ел., радио и електронен характер, част от която с приложение и в пчеларството

- Електронни схеми, радиосхеми и устройства удобни за повторение от начинаещи;

- Снимки на фигурки изработени от електрически, разноцветни кабели. Други ел. снимки;

- Детски любителски набори - радиоконструктори за сглобяване на радиоприемници наричани играчки;

- Детекторни радиоприемници, техни модели;

- Сувенирни радиоприемници - играчки, някои от тях предназначени за ученици;

- Модулни набори - радиоконструктори от типа "Електронни кубчета" или "Мозайка" с които се работи без поялник и се захранват с батерии;

Информация за електрически и електронни компоненти и устройства, някои от които приложими и в пчеларството

- Токозахранващи устройства. Стабилизатори, преобразуватели, удвоители на напрежение;

- Импулсни стабилизатори на напрежение. Инвертори на напрежение;

- Устройства за дозареждане и компенсиране на саморазряда на акумулаторни батерии;

- Релета за време. Процедурни часовници. Схеми с ИСх 555;

- Цветомузикални устройства. Светлинни ефекти;

- Схеми за регулиране и поддържане на температура;

- Измерване на топлинния режим на радиоелектронна апаратура. Електронни термометри;

- Мрежови трансформатори. Опростени методики за изчисляването им. Електрожен;

- Зарядни устройства за Ni-Cd акумулатори;

- Устройства за имитиране гласовете на животни и птици. Мелодични звънци;

- Уреди, пробници, индикатори, генератори, тестери, измервателни приставки за любителската лаборатория;

- Металотърсачи, включително такива за откриване на метални предмети и кабели;

- Схеми на устройства, приложими за и около автомобила;

- Схеми на устройства с приложение на оптрони;

- Измерване на относителна влажност. Прецизен влагорегулатор. Поддържане на влажността на въздуха;

- Регулатори и сигнализатори за ниво на течност;

- Регулатори на мощност и на обороти;

- Опростено изчисляване на повърхността на радиатори за полупроводникови елементи;

- Схеми за управление на стъпков двигател, включително четирифазен. Енкодер/Валкодер, някои от които реализирани със стъпков двигател;

- Мощни, широколентови, операционни усилватели. Логаритмичен и антилогаритмичен усилвател;

- Електронни реле - регулатори. Реле - регулатор за лек автомобил. Стенд за проверка на реле - регулатори;

- Променливотоков регулатор. Стабилизатор за променлив ток. Ферорезонансен стабилизатор;

- Електронни схеми и устройства приложими в медицината;

- Няколко светодиодни индикатора. Икономичен светодиод. Светодиодна стрелка;

Практически приложими ел. устройства с учебна цел, реализирани с PIC16F84A, PIC16F88, PIC16F628 ... Arduino и др.

Подобряване със свои ръце възпроизвеждането на звука в дома, офиса, автомобила - subwoofer и други варианти

Радиоелектронни сайтове | Електронни библиотеки

 

 Разработки     Главна (съдържание на статиите)                         
Собствено Търсене

 

 



Генератор сигналов на Arduino (Генератор на сигнали с Arduino)

 


Генератор сигнала (т.н. функциональный генератор) может быть использован для тестирования и отладки схем. Я часто использую его для проверки частотных характеристик электронных компонентов, например ОУ и датчиков. Этот генератор сигналов построен на плате Arduino. Он может выдавать четыре типа сигнала: синусоидальный, треугольный, прямоугольный и пилообразный, частота каждого из которых может регулироваться от 1Гц до 50 кГц. Частота, длительность импульса и амплитуда (усиление) сигналов управляется тремя потенциометрами. Я также добавил опциональный светодиодный индикатор, который указывает какой сигнал сейчас на выходе.


Список деталей:
(4x) Миниатюрная кнопка с фиксацией.
(8x) Резистор 10кОм 0.25Вт.
(9x) Резистор 20кОм 0.25Вт.
(1x) Потенциометр 50кОм.
(1x) Потенциометр для регулировки громкости для компенсации нелинейности человеческого слуха 10кОм.
(1x) Потенциометр со встроенным выключателем 10кОм.
(1x) Стерео аудио разъем 1/8.
(1x) Керамический дисковый конденсатор 1000пФ 50В.
(1x) Резисторы 4,7кОм 0.25Вт.
(1x) 8 контактная панелька для микросхем.
(1x) ОУ LM386.
(2x) Электролитический конденсатор 220мкФ 35В(любой от 200 до 300мкФ).
(1x) Arduino Uno REV 3.
(1x) Arduino Proto Shield.
(4x) Белый супер яркий светодиод.
(4x) Резистор 740 Ом 0.25Вт.
(1x) Резистор 300 Ом 0.25Вт.


Дополнительные материалы:
Термоусадка.
Провод №22.
Припой.
Дрель со сверлами.
Термоклей.
Клей


Подготовка Arduino Proto Shield
Arduino Proto Shield - это удобный способ добавления своей схемы к Arduino, но я решил немного его урезать, чтобы он занимал меньше места в корпусе. Сначала я укоротил выводы при помощи кусачек. Потом я убрал шести контактный разъем. После этого я удалил разъемы с верхней части платы.


Корпус
Я решил использовать лазерный резак для изготовления корпуса. Я разработал корпус используя AutoCAD, Autodesk 123D Make, и Corel Draw. Все файлы проекта можно скачать внизу статьи. Если у вас нет доступа к лазерному резаку, вы можете сделать все детали корпуса вручную по двумерным чертежам.


На картинке показаны отверстия на передней панели:
(3x) 7мм отверстие для потенциометров усиления, частоты и ШИМ.
(3x) 7мм отверстие для четырех кнопок - синусоидальный, треугольный, прямоугольный и пилообразный сигналы.
(1x) 10мм отверстие для аудио разъема.


Я вырезал изображения всех четырех сигналов для того чтобы их можно было подсвечивать, но вы можете просверлить простые отверстия 5мм для светодиодов под каждой кнопкой.
Также есть прямоугольное (высота11мм, ширина 12 мм) отверстие для USB-порта Arduino в задней части устройства.
Я сделал корпус из дерева, поэтому мне пришлось склеивать все его части кроме задней панели, которое я приклею после сборки устройства.


Пайка проводов к кнопкам
Припаяйте 10 кОм резистор к одному из выводов каждой кнопки. Припаяйте зеленый провод к месту соединения кнопки и резистора и красный провод к резистору как показано на фото. Черный провод припаяйте к другому контакту кнопки. Все эти соединения надо заизолировать термоусадкой во избежание короткого замыкания.


Установка аудио разъема
Свинтите пластиковый корпус с аудио разъема. Припаяйте красный провод к двум стерео контактам и черный провод к GND как показано на фотографии. Я использовал термоклей для предотвращения короткого замыкания и дополнительной фиксации проводов и пайки. После этого, вставьте гнездо в отверстие в корпусе и закрепите его термоклеем.


Установка кнопок
Снимите с кнопок верхнюю часть и установите их в корпус, зафиксировав термоклеем. После его высыхания, установите верхнюю часть кнопок обратно.


R2R ЦАП на Arduino Shield
Припаяйте восемь резисторов 20кОм на Arduino Proto Shield. Один из выводов каждого резистора должен быть подключен к цифровым контактам Arduino 0-7.


Припаяйте семь резисторов 10кОм на Arduino Proto Shield так, чтобы они были между выводами ранее припаянных восьми резисторов 20 кОм.


Припаяйте резистор 10кОм на Arduino Proto Shield так, чтобы один вывод резистора 10кОм был присоединён к цифровому контакту 0 Arduino, а другой вывод к GND.


Панелька для микросхем
Использовать панельки для микросхем хорошо, потому что благодаря им микросхема не перегревается при пайке и может быть легко заменена в случае поломки. Припаяйте панельку для микросхемы, как показано на фотографии.


Фильтр нижних частот
В качестве ФНЧ (Фильтр Нижних Частот) выступают резистор и конденсатор, соединенные последовательно. ФНЧ пропускает низкие частоты и подавляет ступеньки на сигнале.
Вот как я рассчитал номиналы компонентов в своем ФНЧ:
Частота среза = 1/(2*pi*R*C)
Согласно теореме Найквиста, сигналы не может иметь частоту больше чем половина частоты дискретизации. Если бы я использовал частоту дискретизации 100 кГц, то максимальная возможная частота была бы 50 кГц.
Если я использую резистор 300 Ом, и хочу иметь частоту среза 50 кГц:
50000 = 1/(6.28*300*C)
C = 1.06*10^-8 F
Если немного округлить:
C = 0.01 мкФ


Подключите один вывод резистора 300 Ом к резистору 10 кОм, подключенному к цифровому выводу 7. Подключите конденсатор к другому выводу резистора 300 Ом. Второй вывод конденсатора подключается к GND.


Усилитель
Подключите положительный вывод конденсатора 220мкФ к соединению резистора и конденсатора в ФНЧ. Второй вывод конденсатора 220мкФ подключается к резистору 20 кОм, второй вывод которого подключается к 3 выводу панельки для микросхемы. Резистор 4.7 кОм подключается между 3 и 4 контактами панельки. К 4 выводу панельки подключается GND.


Подключите положительный вывод второго конденсатора 200мкФ к 5 контакту панельки. Позже, второй его вывод будет к подключен к потенциометру «Усиление». Подключите 6 контакт панельки к Vin, 2 контакт к GND и вставьте микросхему в панельку.


Подключение потенциометра "Усиление"
Громкость или усиление звукового сигнала будет управляться аудио потенциометром 10 кОм с выключателем. Подключите выход усилителя и GND к потенциометру, как показано на фото. Средний контакт это аудио выход, который будет подключен непосредственно к разъему.


Также подключить провода к нижнему и левому контактам сзади как на фотографии. Это выключатель, который потом будет подключен к питанию.


Подключение батареи
Подключить черный провод от разъема для батареи к GND Arduino Shield. Один провод от выключателя в потенциометре подключите к красному проводу, а второй провод от выключателя потенциометра к Vin Arduino Shield. Пока не подсоединяйте батарею.


Подключение аудио разъема
Соедините выход усилителя (отрицательный вывод конденсатора подключенного к 5 пятому выводу панельки) с красным проводом присоединенным к аудио разъему раньше. Черный провод подключите к GND Arduino Shield.


Подключение кнопок
Подключите все красные провода от кнопок к 5В и все черные провода к GND Arduino shield. Подключите зеленые провода к аналоговым контактам 0-3 в следующем порядке:
Аналоговый контакт 0 = Прямоугольный
Аналоговый контакт 1 = Треугольный
Аналоговый контакт 2 = Пилообразный
Аналоговый контакт 3 = Синусоидальный


Подключение потенциометров "Частота" и ШИМ
Подключите красный, черный, и зеленый провода к потенциометрам 10кОм и 50кОм, как показано на фотографии. Подключите красный провод к 5В и черный провод к GND Arduino shield. Подключите зеленые провода к аналоговым контактам 4 (ШИМ) и 5 (Частота).


Установка потенциометров
Снимите шайбы и гайки с потенциометров перед установкой в корпус, чтобы позволить им стать вплотную с деревом. После установки потенциометров закрепите их гайками.


Подключение светодиодов
Подсоедините резистор 470 Ом к катоду каждого из четырех светодиодов. Припаяйте черный провод ко второму выводу резистора и красный провод к аноду светодиода. Заизолируйте всё термоусадкой во избежание короткого замыкания. Припаяйте черные провода от всех четырех светодиодов на GND Arduino shield. Припаяйте красные провода к цифровым контактам 8-11.


Установка светодиодов
Приклейте светодиоды в корпусе так, что каждый из них подсвечивал один символ на передней панели :
Цифровой контакт 8 = Прямоугольный
Цифровой контакт 9 = Треугольный
Цифровой контакт 10 = Пилообразный
Цифровой контакт 11 = Синусоидальный


Черный свето рассеиватель
Приклейте свето рассеиватель на вырезы в передней панели с внутренней стороны. Я использовал кусок черного пластикового мешка для мусора.


Программа
Прошейте Arduino кодом в файле function_generator.ino. В коде используются прерывания по таймеру на частоте 100 кГц для отправки новых данных в ЦАП. Остальная часть кода следит за состоянием кнопок и потенциометров. Так как прерывания происходят на высокой частоте, я должен сделать программу обработки прерываний в ISR(TIMER1_COMPA_vect){} как можно короче. Математические операции с плавающей точкой и с помощью функции sin() занимают слишком много времени. Я рассмотрел с нескольких проектов, и получил это: Для треугольного и пилообразного сигнала я создал переменные sawByte, triByte, sawInc, и triInc. Каждый раз, когда частота меняется, я подсчитываю сумму на которую частота треугольного и пилообразного сигналов должна измениться с частотой 100 кГц:


То есть все, что должно быть сделано в прерывании, является простой математикой:


Для синусоидально сигнала, я написал простой скрипт на Python, который выводит 20000 значений 127+127 sin(х) за один полный цикл:


Я сохранил этот массив в памяти Arduino под названием sine20000[] и беру из него значения которые необходимо отправить в ЦАП. Это намного быстрее, чем вычислять значения каждый раз.


Последние штрихи
Подключите shield к Arduino. Подключите 9В батарею к разъему. Закрепите эти элементы внутри корпуса. Убедитесь, что USB-порт Arduino доступен снаружи. После запуска вы должны увидеть светящийся индикатор синусоиды.


Установка задней панели и ручек
Просверлите четыре отверстия на задней панели и закрепите её с помощью винтов. Привинтите ручки на потенциометры.


Тестирование
Немного поверните ручку усиление, чтобы включите генератор. Включите штекер в гнездо и подключите к нему осциллограф. Проверяйте каждый сигнал и меняйте его частоту, чтобы убедится, что всё в порядке. Переключитесь на Прямоугольный сигнал и проверьте наличие ШИМ сигнала.


Вы заметите, что прямоугольный сигнал является единственным, который по настоящему регулируется от 1 Гц до 50 кГц. Поскольку частота дискретизации 100 кГц, синусоидальный, треугольный, и пилообразный сигналы становятся немного неузнаваемыми примерно после 25 кГц (4 отсчета за такт-100kHz/25kHz). Пилообразный и треугольный сигналы понижаются примерно 100 Гц, иначе значения triInc и sawInc станут настолько низким, что они округляются до нуля. Синусоидальный сигнал понижается до 1 Гц, но на самом деле до 5Гц, так как Arduino имеет достаточно памяти только для хранения около 20 тыс. значений.


Скачать файлы к проекту


Оригинал статьи на английском языке (перевод: Александр Касьянов для сайта cxem.net)
 

Arduino Waveform Generator


Waveform generators (also called function generators) are useful for testing and debugging circuits. I often use them to test the frequency response of electronics components like op amp and sensors. This waveform generator is powered by an Arduino. It outputs four waveshapes: sine, triangle, pulse, and saw, each waveshape ranges in frequency from 1Hz-50kHz. The frequency, pulse width, and overall amplitude (gain) of the waveforms is controlled by three potentiometers. I've also included (optional) indicator LEDs that let you know which type of wave is currently being sent to the output.

Parts List:

(4x) Mini SPST 1.5-Amp Momentary Pushbutton Switch (2 packages) Radioshack #275-1556
(8x) 10K Ohm 1/4-Watt Carbon Film Resistor (2 packages) Radioshack #271-1335
(9x) 20K Ohm 1/4-Watt Carbon Film Resistor (2 packages)
(1x) 50K-Ohm Linear-Taper Potentiometer Radioshack #271-1716
(1x) 10K-Omh Audio-Taper Potentiometer Radioshack #271-1721
(1x) 10K-Ohm Audio Control Potentiometer with SPST Switch Radioshack #271-215
(1x) 1/8" Stereo In-Line Audio Jack Radioshack #274-274
(1x) 10.01µf 50V Ceramic Disc Capacitor Radioshack #55047551
(1x) 4.7K Ohm 1/4-Watt Carbon Film Resistor Radioshack #271-1330
(1x) 8 Pin Socket Radioshack #276-1995
(1x) LM386 Low Voltage Audio Power Amplifier Radioshack #276-1731
(2x) 220µF 35V 20% Radial-lead Electrolytic Capacitor (or anything between 200 and 300 uF) Radioshack #272-1029
(1x) Arduino Uno REV 3 Radioshack #276-128
(1x) Arduino Proto Shield Radioshack #276-140
(4x) White Super-bright LED Indicator Radioshack #55050633
(4x) 740 ohm 1/4W 5% Carbon Film Resistor (1 package) Radioshack 271-1317
(1x) 300Ohm resistor


Additional Materials:

Heat Shrink Radioshack #278-1611
22 Gauge Wire Radioshack #278-1224
Solder Radioshack #64-013
Drill
Hot Glue
Glue
Black diffusor material (tissue paper, plastic, etc)
Step 1Prepare Arduino Proto Shield

The Arduino Proto Shields are a convenient way to attach circuits to an Arduino, but I like to trim them down a little bit first so they do not take up so much room in the project enclosure. Start by trimming the pins down with a pair of wire cutters. Next, cut off the six pin socket. Finally, cut the sockets from the top of the board.
Step 2Enclosure

I decided to laser cut a custom enclosure for my project. I designed the enclosure using AutoCAD, Autodesk 123D Make, and Corel Draw, and I've included corel draw and adobe illustrator 2D files as well as the STL, and DWG files from this process below. If you do not have access to a laser cutter, you can use my 2D files a guide and drill the necessary holes in a project enclosure of some kind. Figure 4 shows the holes that should be drilled on the front panel:

(3x) 7mm holes for gain, freq, and PWM pots
(3x) 7mm holes for four push buttons- sin, saw, tri, and pulse
(1x) 10mm hole for audio out
I cut out shapes of all four waveforms in the front of the enclosure so that I could backlight them with indicator LEDs, you may choose to just drill four 5mm holes for these LEDs in the front panel of the enclosure, place one LED under each momentary switch.
Also include a rectangular (11mm tall, 12mm wide) cutout somewhere on the side of the enclosure for the arduino's usb port.

I made my project enclosure out of wood, so I had to glue all the pieces (except the bottom) together with wood glue. I will attach the bottom panel on later in this instructable.

Solder a 10kOhm resistor to one lead of each of the four push buttons. As shown in the second image, solder a green wire to the junction between the button and the resistor and a red wire to the other end of the resistor. Solder a black wire the the second lead of the push button. It's a good idea to cover these connections with a bit of heat shrink to prevent short circuits (fig 2).
Step 4Install Audio Jack

Unscrew the plastic casing from the audio jack. Solder a red wire to the two stereo out pins and solder a black wire to the ground pin (fig 3). I used hot glue to prevent short circuiting the jack and to give the soldering joints some extra support. Finally, mount the audio jack in the enclosure with super glue.
Step 5Install Buttons
Snap the top of the button off and fit them into the wooden enclosure. Secure with hot glue. Once dried, snap the black button tops back on.
Step 6R2R DAC on Arduino Shield: Part 1
Solder eight 20kOhm resistors to the arduino protoshield. One end of each resistor should connect to digital pins 0-7.
Step 7R2R DAC on Arduino Shield: Part 1
Solder 7 10kOhm resistors to the protoboard so that they bridge the leads of the 8 20kPhm resistors you have just soldered.
Step 8R2R DAC on Arduino Shield: Part 3
Solder a 10kOhm resistor to the protoshield so that one end is connected to the 10kOhm resistor attached to digital pin 0 and the other end is connected to a jumper wire to ground.
Step 9IC socket
It's a good idea to use sockets for your ICs, this way you won't risk burning the IC with your soldering iron and you can easily replace the IC if it breaks. Solder an 8 pin socket to the protoboard as shown in the image.
Step 10Low Pass Filter
Use a resistor and capacitor in series to create a low pass filter. Low pass filters let low frequencies pass through and silence (attenuate) high frequencies. Connecting a low pass filter to the output from the dac will smooth out the steps in the wave.

Here's how I calculated the value of the components in my low pass filter:

corner frequency = 1/(2*pi*R*C)

According to Nyquist's Theorum, signals cannot contain frequencies higher than half their sampling rate. If I used a sampling rate of 100kHz, then the highest frequency I can produce is 50kHz.

if I use a 300Ohm resistor and I want a corner frequency of 50kHz:

50000 = 1/(6.28*300*C)
C = 1.06*10^-8 F

round this to:
C = 0.01uF

Connect one end of the the 300Ohm resistor to the 10kOhm resistor connected to digital pin 7. Connect the capacitor to the other end of the 300Ohm resistor. The other side of the cap should connect to ground.
Step 11Amplifier: Part 1
Connect the positive lead of the 220uF capacitor to the junction between the resistor and capacitor of the low pass filter. The other end of the 220uF capacitor connects to a 20kOhm resistor that is connected to pin 3 of the IC socket. A 4.7kOhm resistor bridges pins 3 and 4 of the IC socket.
Step 12Amplifier: Part 2
Connect ground to pin 4 of the IC socket.
Step 13Amplifier: Part 3
Connect the positive lead of a second 200uF capacitor to pin 5 of the IC socket. The other end of the cap will be connected to the gain pot in a later step.
Step 14Amplifier: Part 4
Connect pin 6 of the IC socket to Vin, pin 2 to ground, and snap the IC into the socket.
Step 15Wire Gain Pot
Volume or gain of the audio signal will be controlled with the 10k audio taper pot with switch. Connect the audio out from the amplifier and ground to either side of the potentiometer as indicated in the picture. The middle is audio out, it will be hooked up directly to the audio jack.

Also connect a wire to the bottom and left leads on the back of the pot (figure 2). This is the switch that will be used to connect to power in the next step.
Step 16Connect to Battery
Connect the black wire from the battery clip to ground on the Arduino Shield. Connect one lead from the gain pot switch to the red wire from the battery clip and connect the other gain pot lead to Vin on the Arduino Shield.

Leave the battery disconnected for now.
Step 17Connect Output to Headphone Jack
Connect the output from the amplifier (the negative lead of the cap connected to the IC at pin 5) to the red wire we attached to the audio jack in an earlier step. Connect the black wire from the audio jack to ground on the Arduino Shield.
Step 18Wire Buttons
Connect all read leads from the button to 5V and all the black wires to ground on the arduino shield (fig 1). Connect the green wires to analog in 0-3 in the following order:

analog 0 = pulse
analog 1 = triangle
analog 2 = saw
analog 3 = sine
Step 19Wire Frequency and PWM Pots
Connect a red, black, and green wire to the 10kOhm and 50kOhm potentiometers as shown in the images. Connect the red lead to 5V and the black leads to ground on the arduino shield. Connect the center green wires to analog pins 4 (PWM) and 5 (frequency).
Step 20Install Pots
Remove the side tab on all of the pots before installing in the enclosure, this will allow them to sit flush against the wood. Remove washer and nut from each of the pots, place pot through hole in enclosure, and secure with nut. Install all three pots in the enclosure.
Step 21Wire LEDs: Part 1
Attach a 470Ohm resistor to the cathode of each of the four LEDs. Solder a black wire to the other end of the resisotr and a red wire to the anode of the LED. Cover these connections with shrink wrap to prevent short circuiting.
Step 22Wire LEDs: Part 2
Solder the black leads from all four LEDs to ground on the arduino shield. Solder the red leads to digital pins 8-11.
Step 23Black Diffuser
Glue a light diffusing material behind the wave cutouts in the front panel. I used a piece of a black plastic garbage bag.
Step 24Glue LEDs
Glue the LEDs in the enclosure so that they are each pointed towards one of the cutout symbols on the front panel. Here is a table for reference:

digital 8 = pulse
digital 9 = triangle
digital 10 = saw
digital 11 = sine
Step 25Firmware
Upload the code at the bottom of this step onto the Arduino. The code uses a timer interrupt at a frequency of 100kHz to send new data out to the DAC. The rest of the code monitors the state of the buttons and knobs and adjusts variables accordingly. Since the interrupts occur at such a high frequency, I had to keep the interrupt routine, the piece of code encapsulated in the ISR(TIMER1_COMPA_vect){} as short as possible. Time intensive operations like mathematical operations with floats and using the sin() function take too much time to complete. I used several work around to get by this:

For triangle and saw I created the variables sawByte, triByte, sawInc, and triInc. Every time the frequency changed I calculated the amount that the triangle and saw function would have to increment at a sampling rate of 100kHz:

triInc = 511/period;
if (triInc==0){
triInc = 1;
}
sawInc = 255/period;
if (sawInc==0){
sawInc = 1;
}

then all the needed to be done in the interrupt routine was some simple math:

case 1://triangle
if((period-t) > t);
if (t == 0){
triByte = 0;
}
else{
triByte += triInc;
}
}
else{
triByte -= triInc;
}
if (triByte>255){
triByte = 255;
}
else if (triByte<0){
triByte = 0;
}
wave = triByte;
break;

case 2://saw
if (t=0){
sawByte=0;
}
else{
sawByte+=sawInc;
}
wave = sawByte;
break;

For the sine function, I wrote a simple python script which outputs 20000 values of 127+127sin(x) for one complete cycle:

import math

for x in range(0, 20000):
print str(int(127+127*math.sin(2*math.pi*x*0.00005)),)+str(","),

I stored this array in the Arduino's memory called sine20000[] and recalled the values I needed to send to the DAC. This is much faster than calculating the values individually.
Step 26Last Few Connections
Plug the Arduino into your shield. Connect a 9V battery to the battery clip. Secure these items inside the enclosure. Make sure that the Arduino's usb port is accessible from the outside of the enclosure. Upon startup you should see the sine wave LED light up.
Step 27Screw Back Panel
Drill four holes in the back panel and secure with screws.
Step 28Add Knobs
Screw knobs on the three potentiometers.
Step 29Test
Turn up the gain knob to turn on the function generator. Plug an eighth inch jack into the output and hook up the function generator to an oscilloscope. Test out each of the waveforms and adjust the frequency and gain to make sure they are working properly. Switch the output to pulse and check if the pulse width modulation knob works (figs 4-6).

You will notice that the pulse wave is the only wave which truly ranges from 1Hz to 50kHz. Since the sampling rate is 100kHz, the sine, triangle, and saw waves start to become somewhat unrecognizable at about 25kHz (they are only comprised of 4 samples per cycle- 100kHz/25kHz). The saw and triangle waves only go down to about 100Hz, this is because the values of triInc and sawInc get so low that they are rounded to zero below this frequency. The sine wave reaches all the way to 1 HZ but the resolution stays the same for anything under 5Hz, since the Arduino only has enough memory to store about 20 thousand samples.
 

http://www.instructables.com/id/Arduino-Waveform-Generator/?ALLSTEPS

cxem.net

 

 

 

Материалите подготви за сайта:

Иван Парашкевов

e-mail: ivanparst@dir.bg

 

         главна страница                   горе

 

 
 
СТАТИСТИКА
    

Copyright2007  Design by