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

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

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

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

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

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

 

 

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

 



Солнечные часы 21 века с лазерным лучом в роли стрелки (Слънчев часовник през 21 век с лазерен лъч в ролята на стрелка)


Это простой проект солнечных часов, в которых в роли стрелки выступает лазерный луч. Сам лазер устанавливается на сервоприводе с дистанционным управлением, который в свою очередь управляется микроконтроллером. Микроконтроллер ведет отсчет времени и соответствующим образом дает команды на поворот сервопривода.
Будучи очень простым по дизайну, мое устройство делает именно то, что я хотел и содержит минимально возможное количество деталей.
В роли микроконтроллера выступает Atmel Attiny24 с кристаллом для большей точности. Внутренний RC-генератор можно откалибровать, однако в конечном итоге точность зависит сугубо от кристалла кварца.
Схема чрезвычайно проста, всего лишь микросхема с кристаллом и конденсаторами, сам лазер и транзистор для управления им, а также сервопривод. Питание идет от блока питания на 5 В.

Микроконтроллер ведет отсчет реального времени. Время конвертируется из минут в формат 1:00 часов и затем в ШИМ импульс, подходящий для управления сервоприводом. Исходный код снабжен полными комментариями и легок для понимания в плане принципа работы.
J4 необходим для программирования микроконтроллера с помощью внутрисхемного последовательного программирования. Если у вас уже есть запрограммированная микросхема (скажем, вашим другом), то этого делать не надо.

При подаче питания сервопривод начинает движение из среднего положения солнечных часов на 1:00 часов. Замкните ножки 5-6 J1 чтобы «стрелка» часов сдвигалась на 1 час за раз. Повторите эту процедуру несколько раз от 1:00 до 12:00 часов для определения диапазона поворота. Затем удалите перемычку, когда лазер укажет на точное время.
Проще установить минуты при установке «ровного» времени, потому что таймер минут сбрасывается на 0 всегда, когда устанавливаются часы. В ином случае, замкните ножки 3-4 J1, перебирая по 2 минуты каждую секунду, и удалите перемычку на нужном времени.
Замыкая ножки, 1-2 вы «оживите» солнечные часы, заставив их показывать секунды. Вначале это действует гипнотически, затем теряет смысл.
Замыкая ножки, 7-8, вы заставляете лазер быть постоянно включенным, иначе он мигает каждую секунду.
Цепь и ПО можно изменить для показа различных значений, например напряжения на аналоговом входе микропроцессора, превращая тем самым лазер в аналоговый измерительный прибор. Или можно сделать что-либо наподобие лазерного «хронулятора»


Вот сама конструкция.

Я использовал сервопривод Hitec HS-300BB – довольно хороший и к тому же случайно завалявшийся в моем ящике. Подойдет и любой другой сервопривод, только возможно диапазон перемещения будет немного иным. Его можно настроить с помощью значений SERVO_MIN и SERVO_MAX, однако будет необходима повторная компиляция.
Печатную плату я не использовал.
На картинках видно, как я прикрепил лазер к сервоприводу: L-образный кусок алюминия, несколько мелких шурупов и тефлоновый зажим легко справились с этой задачей. Сложным было выровнять нижний конец лазерной линии с центром сервопривода. В любом случае, ошибки в этом процессе могут породить некоторые интересные эффекты, когда лазерная линия движется не вокруг одного из своих концов, а вокруг некоей точки где-то посередине, подобно стрелке спидометра. Экспериментируйте

 


Программное обеспечение.
Написано на С, компиляция и отладка в AVR Studio. Отладку кода я производил с помощью AVR Dragon, которая использует встроенные в ATTiny24 возможности по отладке.
Код снабжен комментариями и должен быть вполне понятным, а также простым для изменений по вашему желанию. Но в любом случае, ниже приводятся несколько комментариев.
#define F_CPU 2457600UL // частота кристалла
#define PWM_TOP F_CPU/60 // = 40960 – МАКС значение для таймера 0 (идет в OCR0A)
Эти прекомпиляторные инструкции определяют частоту кристалла и значение, вносящееся в регистр OCR1A, которое будет максимальным значением для таймера1 перед сбрасыванием на ноль. Нам надо, чтобы частота ШИМ была 60 Гц. Эта импульсы также используются в качестве временной оси для часов реального времени.
Следующие строки настраивают Таймер1 на быструю ШИМ, без предделителя частоты (то есть частота кристалла напрямую идет на Таймер1), а ШИМ Compare Output на выводе ОС1В.
TCCR1A = _BV(WGM11) | _BV(WGM10) | _BV(COM1B1);
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
OCR1A = PWM_TOP; // ШИМ част = 60 Гц
Сейчас Таймер1 отсчитывает время от 0 до значения PWM_TOP, 60 раз каждую секунду (2457600/40960)
Вышеуказанные инструкции также делают выход OC1B высоким, когда счетчик меньше значения ОCR1A и 0 в обратном случае. Это и есть ШИМ – изменение значения OCR1B от 0 до PWM_TOP изменяет коэффициент заполнения от 0% до 100% на частоте ШИМ, которая не меняется: 60 колебаний каждую секунду, колебания просто уже или шире.
Точное значение станет понятнее после просмотра технической документации по ATTiny24.
Следующая инструкция помещает сервопривод на положение OCR1B – промежуточное положение между максимальным и минимальным положениями сервопривода.
OCR1B = (SERVO_MAX + SERVO_MIN) / 2;
Это значение не составляет 50% коэффициента заполнения ШИМ, так как сервопривод перемещается от минимального положения до максимального с импульсом менее 50%, поэтому я определил значения defined SERVO_MAX и SERVO_MIN, основываясь на длительности импульсов, которые перемещают сервопривод в максимальное или минимальное положение:
#define SERVO_MAX PWM_TOP*1.65/(1000/60) // макс. поворот – на 2,35 млс импульса
#define SERVO_MIN PWM_TOP*0.75/(1000/60) // мин. поворот – на 0,70 млс импульса
Теперь я хочу, чтобы переполнение таймера использовалось в качестве временной оси для часов реального времени:
TIMSK1 = _BV(TOIE1); // включить переполнение таймера (для часов реального времени)
sei(); // включить глобальные прерывания
Сейчас каждую 1/60-ую секунды выполняется следующая операция:
ISR(TIM1_OVF_vect) { … }
Эта операция выполняет целый ряд действий:
Отсчитывает реальное время, 60 умноженное на 1/60 секунды означает прошествие одной полной секунды, поэтому вместе с отсчетом минут и часов можно добавить и секундомер.
Заставляет лазер мигать каждую 1/10-ую секунду каждую секунду, если только не стоит соответствующая перемычка, в противном случае лазер включен постоянно.
Данная операция также определяет положение, в которое должен передвинуться сервопривод. Для выполнения этой задачи время конвертируется в общее количество минут, прошедших со времени 1:00, а полученный результат вписывается в диапазон
SERVO_MIN до SERVO_MAX
servo_pos = servo_min + ((hour-1)*60+min)*((servo_max-servo_min)/(11*60+59));
Замыкая JUMP_0 мы заставляем сервопривод отображать только секунды (от 9 до 59), тем самым вышеуказанное вычисление производится только по текущим секундам, минуты и часы не принимаются во внимание.
servo_pos = servo_min + sec*((servo_max-servo_min)/59);
Следующие команды помещают сервопривод в зеркальное положение, чтобы лазер двигался по часовой стрелке:
OCR1B = servo_min+servo_max-servo_pos; // по часовой стрелке
// OCR1B = servo_pos; // против часовой стрелки («закомментарено»)
Если необходимо, то можно превратить первую строчку в комментарий и убрать «//» со второй. Результатом этого станет (после компиляции и закачки в процессор) то, что сервопривод будет двигаться против часовой стрелки.
Наконец, эта операция также проверяет наличие перемычек для выставления времени и, если требуется, устанавливает часы и минуты. Минуты изменяются каждые полсекунды, тогда как часы – раз в секунду. Убрав перемычки, вы вернете стандартное отображение часов.
Если вы хотите модифицировать и перекомпилировать программу с помощью AVR Studio с AVRGCC, С компилятором, не забудьте установить FUSE на режим External Clock от 0,9 до 3 МГц, без сторожевого таймера, х8 делитель частоты – отключен. Все остальные FUSE – по умолчанию.


• Готовый hex-файл для загрузки в микроконтроллер.
• Исходный код на С.
• Схема.
http://www.rlocman.ru/i/File/2009/06/10/1.pdf

 

Фрагменты обсуждения: Полный вариант обсуждения »
• Я делал обычные солнечные часы, которые показывали время с точностью в 5 мин, правда всего в течении недели :) дальше нужно более точно рассчитывать угол наклона земли. Они представляли гораздо больший интерес, чем эти. Сам дизайн не интересен, даже не хочется вдаваться в схему.
• http://mobbit.info/item/2009/4/10/so...-solnca-8-foto Не знаю какого века эти часы, но тоже о-о-очень оригинальные!
• Представляет интерес, как элемент дизайн помещения в виде готового изделия.
• Первый вариант часов: простенько, но вполне приемлемо. По ссылке от YAA, конечно очень красиво и оригинально, но конструкция не из простых.

На английском языке: XXI Century Sundial - Now for Arduino also
XXI Century Sundial - Now for Arduino also
This is a simple project of a sundial wherein the pinion is replaced by a line LASER I took from a LASER level. The LASER is mounted on a RC servo which in turn is driven by a micro controller. The micro controller keeps the time and turns the RC servo accordingly.
Very basic in design it does exactly what I wanted and has as few parts as I could.
The micro controller is an Atmel Attiny24 with crystal for better accuracy. The internal RC oscillator could be calibrated but in the end the precision can be achieved from a crystal quartz only.
The schematic is very simple, just the micro with crystal and capacitors, the LASER and the transistor necessary to drive it, the servo. The power supply comes from a 5Volt wall adapter.
The micro controller runs a real time clock. Time is converted into minutes from 1:00 hours and converted in PWM pulse which is suitable to drive an RC servo. The source code is well commented, I’d say, and can be easily followed to understand how it works. In case, just comment and ask.
J4 is necessary to program the micro with the In Circuit Serial Programming faciliy like the one provided by the AVR Dragon debugger. If you have the micro already programmed (by a friend, say) you don’t need to mount that. Just be careful not to leave unconnected the R2, J2 and Pin 7 node also…
Upon power on the servo swings from about mid position of the sundial to 1:00 hours. Short pins 5-6 of J1 to make the sundial advance 1 hour at a time. Let it go a few times from 1:00 to 12:00 to see the rotation span. Then remove the short when the LASER points to the right hour.
To set the minutes it might be easier to set the time at the exact hours as the minutes are set to 0 whenever hours are set. Otherwise just short pins 3-4 of J1 counting 2 every second and remove the short when at the correct minute.
Shorting pins 1-2 adds some life to the sundial and makes it count just the seconds. Hypnotic initially, then pointless.
Shorting pins 7-8 makes the LASER on continuously, otherwise it blinks every second, like in the video below.
The circuit and software can be modified to display different things like a voltage at an analog input of the micro making a LASER analog meter. Or to make something like a LASER chronulator.
More of these circuits can be superimposed to display different values on the dial.
This is a picture of the thing.
The servo I used is a Hitec HS-300BB, a pretty good one I happened to have in a drawer. Any other servo would do, the rotation span being probably a little bit different. It can be adjusted with the SERVO_MIN and SERVO_MAX defines but recompiling would be necessary.
I did not use a PCB, I actually built an UV bed to make PCBs but I never get to the point of actually making one…in case : http://www.instructables.com/id/The-return-of-the-dead-flatbed-scanner/
The pictures show how I attached the LASER to the RC servo : an L-shaped piece of Aluminum, a few tiny screws and a teflon fastener did the job easily. The tricky part is to make the lower end of the LASER line aligned with the center of the rotation of the servo. Anyways, misalignment might give some interesting visual effects when the LASER line does not rotate along one of its end but around a point somewhere in between like the hand of a speedometer. Just experiment.
The software.
It is written in C and compiled and debugged in AVR Studio. I debugged the code with the AVR Dragon which uses the In-circuit debugging capabilities of the ATTiny24.
The code is commented and should be readable and modifiable as desired in any case a few comments follow.
#define F_CPU 2457600UL // crystal frequency
#define PWM_TOP F_CPU/60 // == 40960 is TOP count for timer 0 (goes into OCR0A)
These pre-compiler instructions define the frequency of the crystal and the value to the placed in the OCR1A register which is going to be the maximum count for timer1 before resetting to zero. We want the PWM frequency to be 60Hz. We are using these 60Hz pulses as the time base for the real time clock also.
The following lines set up Timer1 with fast PWM, no prescaler (that is, the crystal frequency goes straight into Timer1), and PWM compare output is on OC1B pin (read on)
TCCR1A = _BV(WGM11) | _BV(WGM10) | _BV(COM1B1);
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
OCR1A = PWM_TOP; // PWM freq = 60Hz
Timer1 now runs from 0 to PWM_TOP which happens 60 times every second (2457600/40960)
The instructions above also make the output pin OC1B high when the counter is below OCR1A and zero otherwise (PWM compare). This is PWM : changing the value in OCR1B from 0 to PWM_TOP makes the duty cycle output from 0% to 100% at the PWM frequency which do not change : 60 pulses every second, the pulses are simply thinner or larger.
The exact meaning will more clear when checked with the datasheet of the ATTiny24.
The following instruction places the servo at OCR1B output halfway between the maximum and minimum position of the servo.
OCR1B = (SERVO_MAX + SERVO_MIN) / 2;
This is not 50% PWM duty cycle, as the servo does rotate from min to max with pulses smaller than 50%, that’s why I defined SERVO_MAX and SERVO_MIN based on the the length of the pulses that place the servo at maximum or minimum:
#define SERVO_MAX PWM_TOP*1.65/(1000/60) // max rotation is at 2.35ms pulse
#define SERVO_MIN PWM_TOP*0.75/(1000/60) // min rotation is at 0.70ms pulse
Now I want the timer overflow to be used also as the timebase for the real time clock :
TIMSK1 = _BV(TOIE1); // enable timer overflow (for real time clock)
sei(); // enable global interrupts
Now every 1/60th of a second the following routine is called :
ISR(TIM1_OVF_vect) { … }
This routine does a number of things :
It counts the real time, 60 times1/60th of a second makes one full second elapsed, so the counter of seconds is incremented together with minutes and hours if required.
It also blinks the LASER for 1/10th of a second every second unless the relevant pin short strips shorted,in which case the LASER is always on.
This routine evaluates also the position to be given to the servo to make it rotate as needed. To do so the time is converted into total minutes elapsed from time 1:00 and the result scaled into the range SERVO_MIN to SERVO_MAX.
servo_pos = servo_min + ((hour-1)*60+min)*((servo_max-servo_min)/(11*60+59));
Shorting JUMP_0 makes the servo display the seconds only (9 to 59) thus the calculation as of above is made on current seconds only and minutes/hours disregarded :
servo_pos = servo_min + sec*((servo_max-servo_min)/59);
The following places the servo in the mirror position to make the LASER rotate clockwise :
OCR1B = servo_min+servo_max-servo_pos; // clockwise
// OCR1B = servo_pos; // counter clockwise (commented out)
If needed the first line can be commented out and the double ‘//’ removed from the second line : this would make (after compiling and downloading to the micro) the servo run counter clockwise.
Finally the routine also checks pin short strips for time set and sets hours and minutes if required. Minutes advance 1 every half a second while hours once per second. Removing the shorts resume regular clock display.
If you are going to modify the and recompile with AVR Studio with AVRGCC, the C compiler, don’t forget to set the fuses to External Crystal mode 0.9 to 3MHz, no watchdog, x8 clock divider disabled. All other fuses should be default.
You can see a video of the sundial below. Please trust me when I say that the light pulses much better than in the video : the bad flicker or disappearing light is just caused by low frame rate, poor camera ( and poor operator ? ). I should have shot the video with the LASER always on. Now I removed the roman lettering from my living room as my sweet half was showing some impatience.

Finally, this is a picture of a real sundial built around 1930 at Tripoli, Libya, I saw recently. Far better than the ones I used to improvise on summertime when I was a kid and didn’t mind melting under the Summer sun.
For questions or comments or anything else, just write, If you build your own, send pictures.
The hex file ready to be burnt into the microcontroller is here, the C source code is here … and the schematic.
The schematic for Arduino is herebelow, click for a larger view (on Flickr) :

 

rlocman.ru
 

 

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

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

e-mail: ivanparst@dir.bg

 

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

 

 
 
СТАТИСТИКА
    

Copyright2007  Design by