Еще называются индикаторы тлеющего разряда.
Здесь уже 3 конструкции.
За основу взята плата arduinix 2009 года – этот вариант более простой и чуть меньше деталей.
Интересно а я тоже видеоиграми занимаюсь как и автор конструкции. Вариант Сеги работает до сих пор – еще продается у нас. И есть 2 самодельных Синклера – о них потом. Это первый доступный компьютер был в 1988 1991. В 92-м уже собрал ibm 286-й.
часы это предмет интерьера. и конечно нужная вещь даже для квартиры не только в офисе. Да , у всех мобильники – они заменили все и даже компьютер – на улице реже спрашивают время. Часы наручные уже роскошь. А за такую штуку под старину – вообще большие деньги надо. За один индикатор цена доходила до 5000 рублей. Где купить набор – внизу страницы.
Отличие от оригинала – на испытании 2 источника питания – на микросхеме 31063 Моторола. В оригинале таймер 555.
Взята плата с лампами ИН12 от разобранного прибора. Что то военное – залита лаком и стоит штампик отк, года примерно 1979 плата. Нет, чуть позже – на лампе надпись отк 16 10 85, кружок с точкой – не брянские вроде и не МЭЛЗ .
набор деталей
схема – к ней парочку исправлений
NE555 (1006ВИ1) выдержит 12 вольт а вот для К155ИД1 напряжение питания 3.8 и до 5 вольт а максимум 6 вольт, это логическая схема, аналог SN74141 . Снять 300 миллиампер питания можно с платы ардуинки, с 5 вольт – там есть маленький линейный стабилизатор 78l05 но он перегреется и может перегореть, правильнее поставить dc-dc с 12 на 5 вольт – можно купить маленькую платку готовую, или вытащить например из адаптера для зарядки телефона в машине. А еще правильнее домотать витков на катушку преобразователя или просто собрать второй – для этого есть отлаженная микросхема 1156ЕУ5 (MC34063) про ее надежность ходят легенды – ну да горящая вставка в прикуриватель работала а стоимость вообще копейки. И всего 3-4 навесных резисторы и емкости маленькие, дроссель. Микросхемка выдает 1.5 ампера при 5 вольтах на выходе без радиатора.
Про подключение к Ардуино – есть в описании дальше, все зависит от скетча программы.
go source (arduinix.com)
Arduino включает Nixie лампы: ArduiNIX – плата для цифровых газоразрядных индикаторов
плата в собранном виде – Arduino управляет лампами тлеющего разряда
Робот пират расставляет детали. надо только за ним все внимательно проверять, резисторы он попутал местами и емкости тоже пытается.
About: I am a 13 year veteran of the video game industry. In my spare time, I make nixie clocks and sell nixie clock kits, and build lightsabers and props in my garage. My main site has links to my video game art p… More About Slothfurnace »www.ArduiNIX.com presents: ArduiNIX Nixie driver shield assembly Короче конструкцию сделал любитель видеоигр, нашел в свободное время индикаторы и приспособил их для часов. Вот у нас редко у кого мастерская в гараже.
The ArduiNIX shield is a user programmable platform for driving multiplexed Nixie tube or other high voltage displays**. The ArduiNIX is open source hardware
Welcome to the assembly portion of the site. Here we will take you step by step through the build process of your ArduiNIX kit. First, make sure you have your parts all accounted for!
Included in your driver shield kit should be the following parts. This is the most current, up to date parts list for the ArduiNIX.
- (1X) ANX_Board
- (1X) Damper Diode 1.0 Amp 400 Volt BYT01-400 511-BYT01-400 @ D1
- (1X) 100uH 1 Amp RFI Suppression Coil 434-11-101M @ L1
- (1X) 25 Volt 470 uF Capacitor 647-UVZ1E471MPD @ C2
- (1X) 350 Volt 1 uF Capacitor 647-UVR2V010MED @ C1
- (1X) 500V 5.6 pF NPO Capacitor 140-500N2-5R6D-RC @ C3
- (1X) 500V 47pF SL Capacitor 140-500S5-470K-RC @ C4
- (1X) IRF730 400V 5.5 Amp Single-Gate MOSFET 844-IRF730APBF @ Q10
- (1X) 1/4″ Squ 1K 10% Single Turn Trimmer 858-25PR1KLF @ R19
- (1X) 6X6 FLAT 4.3mm BTN Tactile Switch 653-B3F-1000 @ S1
- (1X) General Purp Single NE555N Timer IC 511-NE555N @ IC1
- (5X) 1/4watt 33Kohms 5% Metal Film Resistors 71-CCF07-J-33K @ R1-R5
- (4X) 1/4watt 100Kohms 5% Metal Film Resistors 71-CCF07-J-100K @ R6-R9
- (4X) 1/4W 470K ohm 1% Metal Film Resistors 660-MF1/4DCT52R4703F @ R10-R13
- (2X) 1/4watt 1Kohms 5% Metal Film Resistors 71-CCF07-J-1K @ R14, R15
- (1X) 1/4watt 10Kohms 5% Metal Film Resistors 71-CCF07-J-10K @ R16
- (1X) 1/4watt 220Kohms 5% Metal Film Resistor 71-CCF07-J-220K @ R17
- (1X) 1/4watt 470ohms 5% Metal Film Resistor 71-CCF07-J-470 @ R18
- (4X) PNP MPSA92 Small Signal Transistor 512-MPSA92 @ Q6-Q9
- (5X) NPN MPSA42 Small Signal Transistor 512-MPSA42 @ Q1-Q5
- (2X) Nixie Driver IC – SN74141 *OR* Equivalent @ IC2, IC3
- (1X) 40P .100″ Pin Strip Headers 517-6111TG Pinrails
Add TipAsk QuestionCommentDownload
Step 1: Lay Out Your Parts
Lets lay out your parts in an easily accessable and organized manner. We don’t supply the solder station, but it would be very handy if you had something similar to assemble your kit with. My solder station is a large metal plate with a panavise and third hand alligator clip helper bolted to it. One end of my third hand helper is modded to hold my solder reel.Add TipAsk QuestionCommentDownload
Step 2: 1.0 Amp 600 Volt Fast Recovery Rectifier Diode @ Position D1
D1 is the Fast Recovery Rectifier Diode. Make sure it goes in correctly, it may only be installed one direction. The band on one end shows you which side is the positive side.
The diode we supply may either be a 400 or 600 volt diode. Either will work.
Use something handy to pull the diode up snug to the board, preferably so your hands are free to solder the leads in.
This is how D1 should look once it’s installed correctly.Add TipAsk QuestionCommentDownload
Step 3: 100uH 1A Coil @ Position L1
This little fellow is going to be helping us pick the correct parts to place on each step. Here he is holding up the 100uH Coil.
The coil is one of the main components that allows us to take 9 volts up to 180. It can be installed either direction, so don’t worry about polarity.
How nice, the diode and coil are going to be best friends.Add TipAsk QuestionCommentDownload
Step 4: 25Volt 470uF Capacitor @ Position C2
Thanks robot buddy. That’s the large Capacitor we need next. C2 is a polarized 25Volt 470 uF Capacitor. The stripe on the side with the “-” signs in a row show you the negative side. This one has to be installed the proper way!
Make sure the negative side of C2 is not inserted into the positive hole on the board.
It should look like this when it’s installed correctly.Add TipAsk QuestionCommentDownload
Step 5: 350 Volt 1 UF Capacitor @ Position C1
Yessir, C1 is the smaller of the two polarized capacitors. C1 is a 350 Volt 1 uF Cap.
Like C2, C1 must be oriented the correct way on the board.Add TipAsk QuestionCommentDownload
Step 6: 500V 5.6 PF NPO Capacitor @ Position C3
Now we move on to C3. C3 is a component which varies from kit to kit. This capacitor controls the voltage range on your unit. The cap we supply may vary from the photo.
Again, C3 is a component which varies from kit to kit. This capacitor controls the voltage range on your unit. The cap we supply may vary from the photo above. As we make slight modifications and improvements to the kit, this component stands to vary the most, so don’t worry if your cap doesn’t look exactly like this.
The current rev of this part is a 500V 5.6 pF NPO Capacitor.
Add TipAsk QuestionCommentDownload
Step 7: 500V 47pF SL Capacitor @ Position C4
Now we have C4. This cap works with C3 to control the voltage range. C4 is a 500volt 47pF capacitor.
C4 may be installed either direction, polarity is not important with C3 and C4.Add TipAsk QuestionCommentDownload
Step 8: IRF730 400V 5.5 Amp Single-Gate MOSFET @ Position Q10
Hey fellow, you’re a swell guy for showing the folks the IRF 730 MOSFET Transistor!
- смотрим у меня – транзистору нужен радиатор, достаточно участка фольги на плате.
This power transistor must be installed correctly, with the metal tab aligned over the solid white stripe at position Q10 on the board.
Using a third hand to tug slightly up on the leads while soldering makes for a great installation.Add TipAsk QuestionCommentDownload
Step 9: 1/4″ Squ 1K 10% Single Turn Trimmer @ Position R19
This little fellow is lives at R19, he is the 1K Trim pot, which will allow us to tune our output anode voltage to the desired range for the Nixie tubes we want to use.
R19 will only insert into the board one way, the three pins on the back will align with the three holes in the board.
R19 will be soldered in here, at the edge of the board near the tall capacitors.
Add TipAsk QuestionCommentDownload
Step 10: 6X6 FLAT 4.3mm BTN Tactile Switch @ Position S1
This little tactile switch tells the Arduino to reset the entire unit.
Howdy, S1. Welcome to the board.Add TipAsk QuestionCommentDownload
Step 11: General Purp Single NE555N Timer IC @ Position IC1
Robo buddy here is showing you the NE555N Timer IC. It is the ticker that controls oscillation to the power end of the ArduiNIX.
The timer IC, like all other ICs must be aligned properly! Take note of the notch on the IC and align it with the notch on the diagram on the board.
Make very sure that the timer IC is oriented properly. The image on the board shows which way to point the cutout, or dish that is on one end of all timer ICs.Add TipAsk QuestionCommentDownload
Step 12: Test Your Resistors!
PROTIP: Use your multimeter to test your resistors to make sure they are installed in the right spots. Set the multimeter to resistance, then measure each set to make sure they are placed correctly.Add TipAsk QuestionCommentDownload
Step 13: 1/4watt 33Kohms 5% Metal Film Resistors @ Positions R1 Through R5
Carefully bend the leads on the resistors like this, so they fit on the board vertically.
R1 – R4 are in a row, R5 is over by the Timer IC.Add TipAsk QuestionCommentDownload
Step 14: 1/4watt 100Kohms 5% Metal Film Resistors @ Positions R6 Through R9
R6 – R9 are in a row similar to R1 – R4.Add TipAsk QuestionCommentDownload
Step 15: 1/4W 470K Ohm 1% Metal Film Resistors @ Positions R10 Through R13
Pump that iron, robot! These are the 1/4 watt 470K resistors.Add TipAsk QuestionCommentDownload
Step 16: 1/4watt 1Kohms 5% Metal Film Resistors @ Positions R14, R15
All resistors are vertically installed, making sure that markings are aligned for identification later if need be.Add TipAsk QuestionCommentDownload
Step 17: 1/4watt 10Kohms 5% Metal Film Resistor @ Position R16
Add TipAsk QuestionCommentDownload
Step 18: 1/4watt 220Kohms 5% Metal Film Resistor @ Position R17
Add TipAsk QuestionCommentDownload
Step 19: 1/4watt 470ohms 5% Metal Film Resistor @ Position R18
Add TipAsk QuestionCommentDownload
Step 20: PNP MPSA92 Small Signal Transistors @ Positions Q6 Through Q9
Woohoo! now for something completely different. MPSA92 Hi voltage transistors!
Watch the orientation on these, make sure they match the diagram. If the leads aren’t bent to fit already, Bend leads like this, so they fit the holes in the board.
Installed in proper location and orientation, should look like this.Add TipAsk QuestionCommentDownload
Step 21: NPN MPSA42 Small Signal Transistors @ Positions Q1 Through Q5
Make sure you read the labels correctly on all transistors, don’t mix them up!
Also bend the leads on these transistors so they fit their holes on the board.Add TipAsk QuestionCommentDownload
Step 22: Nixie Driver IC – SN74141 *OR* Equivalent @ Positions IC2, IC3
Your kit will come supplied with Texas Instruments 74141 Driver chips or the Russian K155NA1 equivalent..
We highly recommend socketing your driver chips, as they are the most delicate part of the ArduiNIX. These are no longer made, and are only available on eBay if you short one or burn one out. TAKE CARE with these.
Make sure the notches on the chip line up with the notches on the diagram. Again, we highly recommend socketing your driver chips, we don’t include sockets in the kits to keep the costs down.Add TipAsk QuestionCommentDownload
Step 23: 40P .100″ Pin Strip Headers
The Pin headers we supply will be used to connect the ArduiNIX Shield to the top of the Arduino Board..Use the Arduino as a guide for placement and orientation to get the rails in straight.
The ArduiNIX board has a spot for connector rails between the 9V connector and the Cathode2 Connector on the bottom of the board. These may be left unconnected if you prefer to run a cable to the Arduino connections under these terminals to use those pins as inputs for setting the clock, advancing the numbers, etc.
Add TipAsk QuestionCommentDownload
Step 24: Anode and Cathode Connectors
The ArduiNIX kit does not include connector rails for the Cathodes. The way you connect your ArduiNIX Shield to your tubes is up to you. We prefer IDE Ribbon cable and angled pin rails, you may prefer hardwiring.
The ArduiNIX connects to your nixie tubes through these terminals. The cathodes connect to the numeral plates 0 through 9, and the anode terminals connect to the anode pin of your nixie tube. ALWAYS use a resistor between the anode terminal and the anode pin of your nixie tube. This is required. The value of the resister varies depending on your tubes, but 10K works well to start with.Add TipAsk QuestionCommentDownload
Step 25: Check Your Work!
Assemble the ArduiNIX Shield to the Arduino board, and check your work, solder welds, alignment and orientation of components. Now doublecheck. It’s important to have everything in the proper place and orientation for the first bootup so you don’t fry out any components. We claim NO RESPONSIBILITY if your board starts sizzling due to bad assembly.
Use a 9Volt DC wallwart power supply with the ArduiNIX (Not included) Once plugged in, certain portions of the ArduiNIX will become charged with high voltage. Do not touch the anode pins, or test points, or any exposed solder points while the unit is charged.
To drive VFD Tubes in the 30 to 40 voltage range, the timing capacitors in steps 6 and 7 must be changed to higher value capacitors.
Once your unit is powered properly, and you have nixie tubes to connect, download the code, and send to the arduino! http://www.arduinix.com/Main/Downloads.htm
Thanks for looking!
Later, we’ll cover assembling the tube boards.Add TipAsk QuestionCommentDownload
Participated in the
Arduino ChallengeView Contest
1 Person Made This Project!
- dreiduke made it!
Did you make this project? Share it with us!
I Made It! ++
есть на newgame.ru
Набор конструктор – немножко американские детальки поменялись на русские.
Да, американцы тоже ставят Минские К155ИД1, их проще найти чем NS 74141 которык уже раритет а в Минске делают на заводе еще.
Вход источника питания 12 вольт – у меня батарея из 16 литиевых 4 параллельно и 4 последовательно, с bms балансирами. Если включен блок от розетки – можно соединить любой источник 12 вольт 1 – 2 ампера. Батарею заряжает адаптер – 16.6 вольт , для упрощения конструкции он включен через лампу галогенку на 12 вольт и она соединена в разрыв провода от адаптера (блок от ноутбука обычный) . Так не перегружается адаптер и заряжается батарея за 3- 4 часа.
Эта штука может включаться по датчику движения или по звуку, это для экономии батареи.
8 ламп не обязательно, 4 или 6 если это часы. Лампы купил за 500р – сейчас можно найти , еще есть и не больше чем раза в 3 дороже.
На выбор – блок питания на NE555 или MC34063 . 12 вольт от батареи или адаптера а 5 вольт – на плате.
это с 12 вольт сделать 5 (на вход 25 не надо можно 12.)Да, на схеме ересь, даже на 300 килогерц не заработает и на выходе будет 25 – все погорит. Катушка L2 минимум смог намотать маленькую 33 микрогенри, на вч феррите – cool mu от материнки. Буду пробовать на 100 килогерц. Это по расчету емкость 180 пф резисторы правильно 3 и 1 к катушка 36 а по рассчету 33 микрогенри. Готовую не нашел – перемотал. Да, у катушки провод 0.6 а лучше и толще если войдет. Не войдет – возьму не 1.5см а побольше кольцо. Вторая катушка у вв блока 100 микрогенри кольцо на феррите 1500 3 см примерно провод 0.6 тоже 11 витков. На маленьком кольце до заполнения 29 – 30 витков.
А схема правильная! Не увидел катушечку вторую которая 220uH – это все потому что бумагу не надо экономить а вход надо слева а выход справа – и если что то в другую сторону – так стрелки для пояснения. (а цепь регулятора напряжения r2 r1 к 5 выводу подписать и указать напряжение регулировки 1.25 вольта. А вот у меня что то не работает – не каждый раз запуск и на выходе всего 3 вольта. Частота может высокая – емкость 170 пикофарад всего – меняю микросхему. А по этой схеме 220 – а ну ка рассчет –https://yahobby.ru/calc
Ct=379 пФ
Ipk=1000 мA
Rsc=0.3 Ом
Lmin=57 мкГн
Co=0 мкФ
R=180 Ohm
R1=1k; R2=3k (5В)
емкость надо бы до 379 – 400 пикофарад. А катушку взять побольше – 57 микрогенри, побольше это 3 сантиметра кольцо все таки, на маленькое не влезет немножко обмотка (и будет перебор ампер на метр – сердечник войдет в насыщение = что ни к чему хорошему не приведет , пойдет большой ток и может погореть нагрузка).
Можно и 170 pF и катушку 33 uH -оставил ее она маленькая и все работает. на выходе 4,8 вольта. Частота по рассчету 100 кгц а по осциллографу побольше 170 – под нагрузкой .* с маленькой нагрузкой 100 ом период – меряю средний частотомером 25 микросекунд, по осциллографу чехарда, но основной сигнал уловил, регулировка работает и все сбивает. Фоты выложу То есть 40 килогерц что очень хорошо. Надо снаббер на 2 или 4 мегагерца – на паразитку уходит процента 2 мощности , частотомер в режиме усилителя с 1 вольта нарисовал 4031 2015 килогерц, с чем я согласен, маленькие колебания на осцилле 20-40 на 1 делении 100мгц а большое основная частота 2 с половиной деления..Зто нормально – схема работает на катушку из вч феррита. Заменил микросхему, все таки не совсем рабочая, а может подпалил. Катушка от материнской платы перемотаная, там ВЧ материал, вроде до 300 кгц будет работать. Еще одна довольно важная поправка к схеме. Если посмотреть заводской документ TI или Motorola то видно что для правильного режима выходных транзисторов микросхемы от 7 к 8 лапе надо провод отсоединить и включить резистор от 36 до 180 ом. (да, феррит М2000НМ не сильно хорошо работает на частотах выше 30 -40 кгц, в телеках строчники запускали на 16. а с меньшей цифрой лучше 500НМ на 400 кгц работает, держу радио катушку французскую года 1935 и на ней все написано. Маленькая – пойдет в налобный фонарь.)
А в схеме высоковольтного источника подбираю катушку . Покрутив переменник 1к – оказалось что лучше всего работает , больше напряжение при меньшем токе на входе это если движочек почти посередине, 1К в сумме на землю и 220К на высокое, по замеру 149 вольт. Это на транзисторе сигнал управления – регулировки есть , если его убрать то и колебаний нет, схема не запускается. А почему 149 – попробую другую катушку, частота не понятно – больше чем у понижающего, а так не совсем правильно. Феррит не хочет на высокой частоте работать, особенно 1500 2000 – ну с меньшей проницаемостью более высокочастотный. Подберу сейчас элементы – чего поменяется. Лампы горят ярко, 149 вольт хватает. эта NE555 получается не так поддается регулировке как MC34063. Переделаю если что не так по другой схеме. Да, может виноват снаббер или демпфер, отключал его и пару вольт прибавилось, это неправильно, но и ВЧ помех не очень заметно. Они больше в трансформаторной схеме, а здесь дроссель. Еще посмотрю по осцилле и отключу если не нужен (RC цепочка 1к 33пф 1кв). ** схема чудесатая – самое высокое напряжение 150 вольт с катушкой миллиметровым проводом на ферритовой чашке 15 микрогенри (150НМ под вопросом) – она запустилась на 2.5 микросекунды – ну совсем чудесато 430 килогерц. Потери у транзюка на такой частоте процента 2. Надо бы ее заставить на 150 или даже 100 килогерц.. Ну да все работает и так, на выходе нужные 150в лампы ярко горят,только входной ток 0.7 ампер. Половина в тепло. Чуть лучше режим на 9 вольтах питания.
попытка рассчета этой схемы.
http://radio-hobby.org/modules/calculation/timer_555
на входе имеем 10к 1к у входов усилителей таймера и емкость 2200, то есть 0.002 мкф
рассчет выдает- 15 микросекунд 60 килогерц а на деле 400 . Подбираю индуктивность по формулам повышайки.
не я конечно все понимаю – ошибки бывают иногда, но чтобы перепутать резисторы r1 r2 0 ну да верхнее 1к нижнее 10к и частота то ушла в 10 раз ровно при всех провереных деталях. Догадался. ну да r2 r1 перепутаны!!!При работе на 400 килогерц проверена катушка 15 микрогенри – она может работать на такой частоте, я ее ставил в фонарь и там вообще то запускал без емкости на 34063 – это 300 килогерц. Чем частота ниже тем индуктивность должна быть больше – 100 микрогенри минимум а лучше 200.
осциллограф говорит что перегрузки и насыщения в катушке нет – в самый раз, нижняя линия напруги на стоке красивая без выброса если было бы насыщение катушки . Делаю только 1 серию снимков при правильной работе. На выходе 223 вольта и от 12 напряжение повышается а ток от источника падает – с неподходящей катушкой наоборот. вот … индуктор 15а 173 микрогенри в 2 провода – 0.7 мм альсифер вч зеленоватый грамм 30 весом (на 500 ватт выравнивающее от бп компа). 9 с половиной делений заряд катушки – то есть накопление энергии пол деления разряд, импульс закрытого состояния 1 деление 2 мкс (90 кгц) ** на этом советское телевидение свою работу заканчивает у пол дома полная темнота провода с красивой светомузыкой вылетают из будки во дворе – не это если неправильно рассчитать или резисторы перепутать как я . У разошедшейся по интернету схемы рассчет не был произведен и осциллой не смотрели поскольку ферритовое 1500 с индуктивностью 118 микрогенри не выдержало и не подходит совсем а нарисованый стерженек 100 микрогенри тем более если только он не из вч феррита 150нм тогда по индуктивности был бо 10- 15 а не 100!! И выдает она всего 120 вольт по причине написаной в этом абзаце (и поработае полчаса и абзац.)
Да, здесь правильная схема (подходит для ИН1 ) и работает с хорошим КПД – ничего не греется . И даже снаббера нет на схеме – он не нужен. На входе 12 вольт до 500 ма а выход в зависимости от резисторов настроен на 178 или на 237 вольт ток до 30 ма (100 потянет кратковременно а на входе будет 3а от 12в).* Замечание по подключению Arduino nano – его нет на схеме D10 D11 D12 D13 к анодам – подключаются к резисторам 4k7 и они к базам транзисторов КТ940 анодных ключей. Выход = коллектор транзистора КТ3157а – внимание он с краю напротив базы а в середине эмиттер – идет через разьем на 1 и 5 а следущего на 2 и 6 лампу. У дисплея модет быть 6 или 8 ламп. Можно и только 4 а секунды неонками. Управление дешифраторами : первым – D2,3,4,5. вторым 6,7,8,9. входы ИД1 3,6,7,4. Смотрим скетч.
// SN74141 (1) int ledPin_0_a = 2; int ledPin_0_b = 3; int ledPin_0_c = 4; int ledPin_0_d = 5; // SN74141 (2) int ledPin_1_a = 6; int ledPin_1_b = 7; int ledPin_1_c = 8; int ledPin_1_d = 9; // anode pins // NOTE: V1 board has this order flipped int ledPin_a_1 = 10; int ledPin_a_2 = 11; int ledPin_a_3 = 12; int ledPin_a_4 = 13;
Осциллограммы почти идеальные – у катушки высокая добротность и почти нет вч колебаний.
чуть более понятная схема а в следующем варианте сделана одна кнопка управления – это в записи Часы на цифровых лампах . Там более сложная конструкция с 6 лампами ИН1 и декатроном, 6 дешифраторов, статический режим – хотя тоже работают в динамике, статика только на прожиг ламп включается. Здесь блок питания полтора ватта а там 25 ватт – сделан вч транс на желтом кольце из металлопорошка или альсифера.
вот собранная плата и к разьему подключены лампы с анодными резисторами. Отличие от оригинальной платы Arduinix в источнике питания на MC34063 – он выдает 5 вольт а питание только 12 вольт (у меня от батареи) . Второе отличие в блоке питания на NE555 – резисторы по цепочке 10к 1к накопление тока в катушке 11 микросекунд разряд катушки 1 мкс катушка 173 микрогенри на 15 ампер- читаем выше Не феррит! (ну можно и феррит только чашка не меньше Ч40 и феррит 500НМ или меньше – частота работы в окончательном варианте чуть меньше 100 килогерц, 90 ближе). К этому источнику можно подключить 6 или 8 ламп со статической индикацией и соответственно мощность до 20 ватт. Как и в другой конструкции, которая немножко посложнее – там 6 ИД1 и 3 сдвиговых регистра.
Засветку я поубирал – ровно 180,5 вольт получается как в аптеке, регулятор – стоит потенциометр в нижнем плече делителя земля – 470 ом – 1к потенциометр от него отвод на микросхему -220к – 91к -плюс напряжения 175-230в . Проверка показывает что на выводах одного дешифратора 35 – 40 вольт а не 65 как на всех на другом, похоже он неисправный – менять надо.теперь паяю 6-ю лампу она секундная. Ставлю пока ИН16 – маленькую в единицы секунд. потихоньку подбираюсь к программной части – там тоже несколько нюансов. Например аноды не по порядку. Как проверить высоковольтные ключи – при включенной схеме дотронуться плюсовым проводом от тестера включенного на проверку диодов – до точки соединения резистора 4k7 и базы транзистора КТ940 – транзистор откроется и загорится несколько цифр на лампе. 180 вольт не надо бояться – щупы от тестера изолированые. Как проверить лампу если она не горит – взять за корпус и поднести к катушке Теслы тоже работающей. Она вспыхнет сразу оранжевым если там есть газ неон. Ну тут 15 киловольт если не больше но высокая частота – может только слегка обжечь. Второй способ – подключить на анод высокое через резистор, не меньше 200 вольт, и дотронуться проводочком соединенным с минусовым контактом – массой или землей называют, еще корпусом прибора, еще общим проводом, здесь минус на общем проводе, к каждому выводу лампы кроме анода. Если никакой электрод неонки не горит ну значит бракованая. Их чинят настолько они редкость, даже делают на заказ, если есть молибден тантал и кто умеет со стеклом работать. экраны в лампе из никеля, изоляторы фарфор и слюда, стоит таблетка из редкоземельных металлов и закачана смесь аргон неон либо водород, немножко совсем ртути. Для облегчения зажигания. Лампы могут работать больше 5000 часов, если не превышать ток, прожигать все электроды включая их на некоторое время, не оставляя долго выключенными.
Все сразу исправно и работает. Дешифратор тоже . Ардуинку просто не понятно откуда дернули и там какая то цифра шла на выводы, как включил без прошивки. Я пишу для начинающих, у меня паяльник и осциллограф в инструменте с 10 лет, не вру. С советского времени, и нее только с радиокружка, и не с производственного обучения в 9 классе даже, старшие были инженеры. И даже в армии занимался. Так вот – ардуино как и любой микроконтроллер надо запрограммировать сначала – смотрим внизу страницы, а для этого там должен быть загрузчик – маленькая програмка которая связывается с компьютером через usb и кристалл видится в Ардуино ide. Если загрузчика вдруг нет – его надо прошить на программаторе или с другой Ардуинки – смотрим по ссылкам.
На ардуино можно сделать и преобразователь напряжения, там есть схема широтно импульсной модуляции внутри микроконтроллера. Только не надо смотреть совсем бездарные схемы с Интернета, где выход этого порта подается прямо на затвор полевика. Надо бы почитать книжки сначала. Полевик должен быть на напряжение которое на выходе будет, это понятно, а лучше с запасом немножко. В нем должен быть защитный диод на подложке. Может надо взять на меньшее напряжение и намотать трансформатор, не ради усложнния а у таких транзисторов меньше сопротивление канала в открытом состоянии и соответственно меньше потери на нагрев. Еще меньше будут потери или даже заработает а не нагреется и бабахнет если на него правильное напряжение подать на затвор. Например 7 вольт. И укоротить как можно импульс закрытия транзистора. Подсказываю – посмотреть другие схемы, там усилитель или ключ на довольно мощном транзисторе. В фонаре например при питании от 3 вольт на затвор подается 14 вольт импульс 450 наносекунд, почти прямоугольный, время спада еще меньше, 200 наносекунд а там емкость у перехода полевика порядочная, для выбранного транзистора 150 пикофарад. Так сделано включение маленького транзистора (кт361б советский еще ) который мало того что на 300 мегагерц работает а еше достаточно мощный чтобы этот импульс в 3 ампера выдерживать. Полевик быстрее закрывается и работает в режиме переключателя, не греется, меньше расход заряда батарей.
вот этот скетч загрузил и конструкция ожила – забегали секунды – только на 5 цифре а не на 6 – программа для 8 ламп.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
// fading transitions sketch for 8-tube board with default connections. // based on 6-tube sketch by Emblazed // 09/03/2010 - Added Poxin's 12 hour setting for removing 00 from hours when set to 12 hour time // 06/16/2011 - 4-tube-itized by Dave B. // 08/19/2011 - modded for six bulb board, hours, minutes, seconds by Brad L. // 01/28/2013 - expanded to 8 digit crossfade by Brad L. // 12/04/2014 - First V2 standardization version by Brad L. // 01/07/2015 - Code Revision by Jeremy Howa // SN74141 : Truth Table //D C B A # //L,L,L,L 0 //L,L,L,H 1 //L,L,H,L 2 //L,L,H,H 3 //L,H,L,L 4 //L,H,L,H 5 //L,H,H,L 6 //L,H,H,H 7 //H,L,L,L 8 //H,L,L,H 9 #define _DEBUG 0 #define _bUSE_COLONS 0 #define _BULB_COUNT 6 #define _bUSE_CROSSFADE 0 #define _BrightnessLevelDelay 7.14// 100.0f / 14.0f // SN74141 (1) int ledPin_0_a = 2; int ledPin_0_b = 3; int ledPin_0_c = 4; int ledPin_0_d = 5; // SN74141 (2) int ledPin_1_a = 6; int ledPin_1_b = 7; int ledPin_1_c = 8; int ledPin_1_d = 9; // anode pins // NOTE: V1 board has this order flipped int ledPin_a_1 = 10; int ledPin_a_2 = 11; int ledPin_a_3 = 12; int ledPin_a_4 = 13; void setup() { pinMode(ledPin_0_a, OUTPUT); pinMode(ledPin_0_b, OUTPUT); pinMode(ledPin_0_c, OUTPUT); pinMode(ledPin_0_d, OUTPUT); pinMode(ledPin_1_a, OUTPUT); pinMode(ledPin_1_b, OUTPUT); pinMode(ledPin_1_c, OUTPUT); pinMode(ledPin_1_d, OUTPUT); pinMode(ledPin_a_1, OUTPUT); pinMode(ledPin_a_2, OUTPUT); pinMode(ledPin_a_3, OUTPUT); pinMode(ledPin_a_4, OUTPUT); // NOTE: Grounding on virtual pins 14 and 15 (analog pins 0 and 1) will set the Hour and Mins. pinMode( 14, INPUT ); // set the virtual pin 14 (pin 0 on the analog inputs ) SET HOURS digitalWrite(14, HIGH); // set pin 14 as a pull up resistor. pinMode( 15, INPUT ); // set the virtual pin 15 (pin 1 on the analog inputs ) SET MINUTES digitalWrite(15, HIGH); // set pin 15 as a pull up resistor. pinMode( 16, INPUT ); // set the virtual pin 16 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(16, HIGH); // set pin 16 as a pull up resistor. pinMode( 17, INPUT ); // set the virtual pin 17 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(17, HIGH); // set pin 17 as a pull up resistor. pinMode( 18, INPUT ); // set the virtual pin 18 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(18, HIGH); // set pin 18 as a pull up resistor. pinMode( 19, INPUT ); // set the virtual pin 19 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(19, HIGH); // set pin 19 as a pull up resistor. // Open serial communications: if( _DEBUG ) Serial.begin(9600); } void SetSN74141Chips( int num2, int num1 ) { int a,b,c,d; // set defaults. a=0;b=0;c=0;d=0; // will display a zero. // Load the a,b,c,d.. to send to the SN74141 IC (1) switch( num1 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; default: a=1;b=1;c=1;d=1; break; } // Write to output pins. digitalWrite(ledPin_0_d, d); digitalWrite(ledPin_0_c, c); digitalWrite(ledPin_0_b, b); digitalWrite(ledPin_0_a, a); // Load the a,b,c,d.. to send to the SN74141 IC (2) switch( num2 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; default: a=1;b=1;c=1;d=1; break; } // Write to output pins digitalWrite(ledPin_1_d, d); digitalWrite(ledPin_1_c, c); digitalWrite(ledPin_1_b, b); digitalWrite(ledPin_1_a, a); } // Fade in/out times .. Values set for IN-17 Nixie Bulbs float fadeMax = 5.0f; float fadeStep = 0.3f; int NumberArray[8]={0,0,0,0,0,0,0,0}; int currNumberArray[8]={0,0,0,0,0,0,0,0}; float NumberArrayFadeInValue[8]={0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f}; float NumberArrayFadeOutValue[8]={5.0f,5.0f,5.0f,5.0f,5.0f,5.0f,5.0f,5.0f}; void DisplayFadeNumberString() { if( _bUSE_COLONS == 1 ) { digitalWrite(ledPin_a_1, HIGH); SetSN74141Chips(0,0); delay(1.8f); SetSN74141Chips(1,1); delay(1.8f); SetSN74141Chips(2,2); delay(1.8f); SetSN74141Chips(3,3); delay(1.8f); digitalWrite(ledPin_a_1, LOW); } if( _bUSE_CROSSFADE == 1 ) { // Anode channel 2 - numerals 1,5 SetSN74141Chips(currNumberArray[1],currNumberArray[5]); digitalWrite(ledPin_a_2, HIGH); delay(NumberArrayFadeOutValue[1]); SetSN74141Chips(NumberArray[1],NumberArray[5]); delay(NumberArrayFadeInValue[1]); digitalWrite(ledPin_a_2, LOW); // Anode channel 3 - numerals 2,6 SetSN74141Chips(currNumberArray[2],currNumberArray[6]); digitalWrite(ledPin_a_3, HIGH); delay(NumberArrayFadeOutValue[2]); SetSN74141Chips(NumberArray[2],NumberArray[6]); delay(NumberArrayFadeInValue[2]); digitalWrite(ledPin_a_3, LOW); // Anode channel 4 - numerals 3,7 SetSN74141Chips(currNumberArray[3],currNumberArray[7]); digitalWrite(ledPin_a_4, HIGH); delay(NumberArrayFadeOutValue[3]); SetSN74141Chips(NumberArray[3],NumberArray[7]); delay(NumberArrayFadeInValue[3]); digitalWrite(ledPin_a_4, LOW); } else { // Anode channel 2 - numerals 1,5 SetSN74141Chips(currNumberArray[1],currNumberArray[5]); digitalWrite(ledPin_a_2, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_2, LOW); // Anode channel 3 - numerals 2,6 SetSN74141Chips(currNumberArray[2],currNumberArray[6]); digitalWrite(ledPin_a_3, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_3, LOW); // Anode channel 4 - numerals 3,7 SetSN74141Chips(currNumberArray[3],currNumberArray[7]); digitalWrite(ledPin_a_4, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_4, LOW); } if( _bUSE_CROSSFADE == 1 ) { // Loop thru and update all the arrays, and fades. for( int i = 0 ; i < 8 ; i ++ ) //equal to & of digits { //if( NumberArray[i] != currNumberArray[i] ) { NumberArrayFadeInValue[i] += fadeStep; NumberArrayFadeOutValue[i] -= fadeStep; if( NumberArrayFadeInValue[i] >= fadeMax ) { NumberArrayFadeInValue[i] = 0.0f; NumberArrayFadeOutValue[i] = fadeMax; //affects the refresh cycle currNumberArray[i] = NumberArray[i]; } } } } else { for( int i = 0 ; i < 8 ; i ++ ) { currNumberArray[i] = NumberArray[i]; } } } // Defines long SSECS = 10000; // sub seconds long SECS = 1000; // milliseconds in a Sec long MINS = 60; // 60 Seconds in a Min. long HOURS = 60 * MINS; // 60 Mins in an hour. long DAYS = 12 * HOURS; // 24 Hours in a day. > Note: change the 24 to a 12 for non military time. long runTime = 0; // Time from when we started. // default time sets. clock will start at 12:34:32:10. This is so we can count the correct order of tubes. long clockHourSet = 01; long clockMinSet = 00; long clockSecSet = 00; long clockSSecSet = 00; int HourButtonPressed = false; int MinButtonPressed = false; //////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////// void loop() { // Get milliseconds. runTime = millis(); //int ssTime = millis(); int hourInput = digitalRead(14); int minInput = digitalRead(15); if( hourInput == 0 ) HourButtonPressed = true; if( minInput == 0 ) MinButtonPressed = true; if( HourButtonPressed == true && hourInput == 1 ) { clockHourSet++; HourButtonPressed = false; } if( MinButtonPressed == true && minInput == 1 ) { clockMinSet++; MinButtonPressed = false; } // Get time in seconds. // NOTE: Change this value from 1000 to a lower number to slow down the clock to debug. long time = (runTime) / 1000; // Set time based on offset.. long hbump = 60*60*clockHourSet; long mbump = 60*clockMinSet; time += mbump + hbump; // Convert time to days,hours,mins,seconds long days = time / DAYS; time -= days * DAYS; long hours = time / HOURS; time -= hours * HOURS; long minutes = time / MINS; time -= minutes * MINS; long seconds = time; long sseconds = 0; // Get the high and low order values for hours,min,seconds. int lowerHours = hours % 10; int upperHours = hours - lowerHours; int lowerMins = minutes % 10; int upperMins = minutes - lowerMins; int lowerSeconds = seconds % 10; int upperSeconds = seconds - lowerSeconds; int lowerSSeconds = sseconds % 10; int upperSSeconds = sseconds - lowerSSeconds; if( upperSSeconds >= 10 ) upperSSeconds = upperSSeconds / 10; if( upperSeconds >= 10 ) upperSeconds = upperSeconds / 10; if( upperMins >= 10 ) upperMins = upperMins / 10; if( upperHours >= 10 ) upperHours = upperHours / 10; if( upperHours == 0 && lowerHours == 0 ) { upperHours = 1; lowerHours = 2; } // Fill in the Number array used to display on the tubes. NumberArray[7] = upperHours; NumberArray[6] = lowerHours; NumberArray[5] = upperMins; // Slot four is used for dots .. should get them blinking ?? !! NumberArray[3] = lowerMins; NumberArray[2] = upperSeconds; NumberArray[1] = lowerSeconds; DisplayFadeNumberString(); } |
обсуждение программы на форуме http://www.robotpirate.com/forums/index.php?PHPSESSID=bff2254e84291db75511a675c89b38a9&board=2.0
устройство может быть дополнено функциями – таймер обратного отсчета до взрыва – это для квеста – убежать из комнаты. Ну или сколько еще времени варить картошку. Метеостанция. Показать температуру влажность и если есть ветряк то какой ветер. Барометр – только прикрутить датчик давления. Температуру измеряет микросхема часов.
Датчик движения. Измеритель расстояния – есть на лазере и на ультразвуке до 5 метров. Измерительный прибор – сопротивление емкость индуктивность. Ток , напряжение, заряд аккумулятора.
Есть еще компас и гироскоп и измеритель ускорения акселерометр. Это если устройство переносное.
Набор деталек на плате. Почти все кроме резисторов. Это для подключения 12 вольт то есть к батарее или в машине или с адаптера питания у которого одно напряжение (в оригинале специальный блок питания 5 и 12 вольт.)
настройка отладка и первый запуск
Отладка для такой программы требуется -? конечно. например в коде сверху рассчитано что плата – shield – куплена на сайте, а здесь на плате есть несколько отличий. Ламп 5 штук ИН12 и 1 – ИН16, у нее выводы подсоединены в соответствии с цоколевкой.
Первым делом – включаем блок питания лабораторный с измерителем тока. Замеряем тестером напряжение 12 вольт.
если такого нет то можно взять сетевой адаптер от ноутбука например и подпаять к нему измеритель напряжения и тока с Алиэкспресс. Не надо конечно обрезать провода, а надо купить такой же разьем – ответную часть и припаять к плате – теперь это плата отладочная. Подсоединить вторую плату с лампами и с анодными резисторами. Проверить соединения. Я все платы делал под 8 ламп а собрал 6 – в езультате первый драйвер анодного напряжения не используется, подсоединил на него неонку через резистор 56к – это получился индикатор напряжения 180 вольт.
Сделайте светодиодную линейку. в другой конструкции. https://yahobby.ru/%D1%87%D0%B0%D1%81%D1%8B-%D0%BD%D0%B0-%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D1%8B%D1%85-%D0%BB%D0%B0%D0%BC%D0%BF%D0%B0%D1%85/
Как все детальки собраны – находим выход маленького источника на mc34063 это на жаргоне называется понижайка dc-dc. Отключаем его выход 5 вольт от питания микросхем ИД1 выводы 5 – отсоединяем совсем. Туда запаиваем нагрузку – резистор 100 ом 2 ватта и соединяем его с общим проводом второй вывод – вся оставшаяся фольга на плате это общий провод минус питания земля и еще экран от вч помех. Соединена конечно к минусу 12 вольтового источника. Для чего это нужно – от этого источника питается Ардуино и 2 микросхемы декодера, если выход будет не 5 вольт а 12 то все детальки на 4000 руб. надо менять – погорели. У меня не погорели, я сначала проверил. Включаем. Если 5 вольт нет то ищем неполадку. Резисторы – делитель около 5 лапы. Времязадающий конденсатор. Если все исправно а очциллограф не показывает пилообразное напряжение на 3 лапе – отсоединяем 8 лапу от питания и присоединяем ее через резистор 91 ом, на 6 проверяем +12 вольт, на 7 тоже +12в через резистор 0.2 ома. Резистор не греется – ? если на выходе ничего нет – 2 вывод, от него диодик минусом к выводу а плюсом на землю и к катушке, проверить все детали, второй вывод катушки и конденсатор электролит после нее – плюс к катушке минус на землю? Если все правильно, питание есть а сигналов нет – или что то греется а замыкания на выходе нет – меняем микросхему. Это только после всех проверок, у меня неисправных не попадалось, одну сам поджег замкнув случайно выход на землю а резистора защиты 0.2 ома не было. Ставить его обязательно. Купите осциллограф, хотя бы простенький (старый советский еще лучше!). 5 вольт есть ? запаиваем туда светодиод катодом то есть минусом на землю, к аноду сопротивление 330 ом и второй вывод сопротивления на выход +5вольт – то есть к конденсатору и выводу катушки . Подсоединяем к контакту ардуино – подписан +5в и к питанию дешифраторов 5 вывод К155 ид1. И проверяем что больше никуда не замыкает! Включаем – светодиод горит, на выходе 5 вольт, на входе 12, ток от источника меньше ампера (0.15 если нет высоковольтного блока) – все правильно. * Ни в коем случае не использовать линейный стабилизатор 5 вольт на Ардуино он очень ненадежный .
Точно так же настраивается высоковольтный блок – с полевиком и на NE555. Здесь проверяем резисторы задающие частоту и период – 10к от питания 12 вольт, на 6 и 7 лапу, от 6 и 7 резистор 1к – время закрывания в 10 раз меньше времени открытия полевика. второй вывод 1к к 2 лапе и к емкости 2200 пикофарад, второй вывод емкости на землю. 3 вывод только на затвор полевика ( ну можно напрямую без усилителя – внутри микросхемы достаточно мощные транзисторы, а в mc34063 только один, а второй pnp надо внешний ставить – это тонкости уже) .
Включаем. После выпрямительного диода – он сверхскоростной very ultra fast и очень высоковольтный 600 вольт да еще выдерживает импульс 200 наносекунд 50 ампер. Вот только проверить его минус катод – к стоку полевика – к среднему выводу и к всему корпусу транзистора, а плюс – анод – к пленочной (слюдяной! можно ) емкости 0.5 или 1 мкф 250в. Конечно наоборот – как проще запомнить – плюс относительно земли создает катушка. Как он замыкается на землю транзистором в ней течет ток – от плюса к минусу, он возрастает по кривой до максимума = и тут транзистор размыкается – куда денется ток – он превратится в импульс напряжения = от источника который теперь минус – почему в цепи 12 вольт большущая емкость 2200 мкф – и на втором выводе будет плюс у катушки – соответственно плюс чтобы прошел через диод к транзистору и катушке соединен анод диода, а катод – желтая или зеленая полоска – к кондеру 250 вольт . Диод КД226Г . От этой схемы зависит коэффициент полезного действия по английски эффективность. Если детали не подходящие то вся энергия уйдет в тепло, преобразователь будет не эффективный а нагреватель более эффективный . за полчаса работы под нагрузкой нагревается совсем немножко до +30 градусов кольцо 170 микрогенри – большое 3 см на 1 см и в 2 толстых провода 0.7 обмотка , и транзистор, мощность в нагрузке 6 ватт если включены все лампы. Регулируем на выходе 180 вольт. – маленьким подстроечным резистором – триммером. У меня запаян от лазерной головки старого dvd и там как раз 1 килоом. цепочка резисторов – 470к на землю, к нему переменный 1к, его отвод на базу транзистора и с коллектора на 5 лапу, эмиттер на землю. От коллектора кт315 на питание резистор pull up то есть подтягивает к питанию – 33 килоома, если транзистор закрыт, на 5 выводе будет 12 вольт. Как только напряжение на выходе источника появится, через 300 килоом и переменник высокое напряжение – уже снижено до 0.7 вольта подается на базу транзистора, он открывается и на 5 лапе 0 вольт, микросхема уменьшает мощность на выходе, регулировка там не совсем pwm то есть меняется не только ширина импульса а еще и период. Это можно прочитать в описании микросхемы – таймер ne555 , она примерно с 1976 как и моторола mc34063, почти полный советский аналог КР1006ВИ1. В другой конструкции этот блок на MC34063, при правильной настройке работает хорошо тоже.
КТ315- это чисто российская разработка и весь мир и западный особенно обязан России “по гроб жизни”!!!! Так как этот транзистор – есть основа для любых процессоров, в том числе и Интел, которые нам “впихивает” запад по бешенным ценам!!!! Без этого транзистора не было бы персональных компьютеров!!!
Электроника-68 1966 Фрязино
Не буду спорить, он сделан у нас и его характеристики на тот момент намного лучше аналогов, до сих пор используется и в этой конструкции тоже. один из первых эпитаксиально планарный кристалл, сделан в Подмосковье. Но вообщетранзистор был придуман американским ученым, хотя и у наших тоже были наработки и почти одновременно. Первые были как стеклянные трубочки из Германия это полупроводник такой , а потом уже кремниевые. есть такие – продам за большие деньги в антикварный или коллекционерам сразу.
Подсоединяем Ардуино к компьютеру через кабель мини юсб . А Потом соединяем питание 12 вольт. Земляной провод – если это ноутбук или обычный компьютер, системный блок, идет на 3 контакт в евро розетке – на усики. Проверить их. Лучше минус питания сразу тоже заземлить, а не при включении кабеля это произойдет. БП ноутбука обычно с развязкой.
Теперь можно запускать программу Ардуино и выбирать прошивку. В программе задаем порт платы Ардуино нано (или duemit.. nova как ее там – не выговорить,) порт com6 например и скорость 57600 для монитора порта. Запускать монитор порта или нет – зависит от программы.
Короткая тестовая программа – это чтобы легче проверить правильность соединений и работоспособность при минимуме деталей – даже можно включить без модуля часов реального времени.
(я много видел в программах типа случайные ошибки – например вывод сообщения и while 1; что значит программа остановится и будет стоять. Проверьте все строчки а потом пробуйте загружать.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 |
// fading transitions sketch for 6-tube board with default connections. // based on 6-tube sketch by Emblazed // 09/03/2010 - Added Poxin's 12 hour setting for removing 00 from hours when set to 12 hour time // 06/16/2011 - 4-tube-itized by Dave B. // 08/19/2011 - modded for six bulb board, hours, minutes, seconds by Brad L. // 01/28/2013 - expanded to 8 digit crossfade by Brad L. // 12/04/2014 - First V2 standardization version by Brad L. // 01/07/20 Program for a 6-digit, K155ID1-based alarm clock; back to 6 // 2021 6 digit 3+3 ,2 id1 // arduino 8v - 78l05 fail? connect working pins OK crystall alive! all pons works // russiche utf8 это проверка на 6 лампах время, кнопками - контакты А0 А1 устанавливаются часы. Программа для 2 ИД1 - и 3 анодных ключей // rus четвертый на неонку через резистор 56к конечно. Первый дешифратор на секунды -anod a2 десятки секунд a3 и единицы минут a4 // second 74141 - tens of second ones hours tens hours anodes a2 a3 a4 - anod a1 use for neon bulb or alarm (not connect now) #include <EEPROM.h> #include <Wire.h> // SN74141 : Truth Table K155ID1 H H H H - off //D C B A # //L,L,L,L 0 //L,L,L,H 1 //L,L,H,L 2 //L,L,H,H 3 //L,H,L,L 4 //L,H,L,H 5 //L,H,H,L 6 //L,H,H,H 7 //H,L,L,L 8 //H,L,L,H 9 #define _DEBUG 1 #define _bUSE_COLONS 0 #define _BULB_COUNT 6 #define _bUSE_CROSSFADE 0 #define _BrightnessLevelDelay 7.14 // 100.0f / 14.0f // SN74141 (1) int ledPin_0_a = 2; int ledPin_0_b = 3; int ledPin_0_c = 4; int ledPin_0_d = 5; // SN74141 (2) int ledPin_1_a = 6; int ledPin_1_b = 7; int ledPin_1_c = 8; int ledPin_1_d = 9; // anode pins // NOTE: V1 board has this order flipped a-1 pin 10 not use / use for colon - 2 bulb in3 int ledPin_a_1 = 10; int ledPin_a_2 = 11; int ledPin_a_3 = 12; int ledPin_a_4 = 13; void setup() { pinMode(ledPin_0_a, OUTPUT); pinMode(ledPin_0_b, OUTPUT); pinMode(ledPin_0_c, OUTPUT); pinMode(ledPin_0_d, OUTPUT); pinMode(ledPin_1_a, OUTPUT); pinMode(ledPin_1_b, OUTPUT); pinMode(ledPin_1_c, OUTPUT); pinMode(ledPin_1_d, OUTPUT); pinMode(ledPin_a_1, OUTPUT); pinMode(ledPin_a_2, OUTPUT); pinMode(ledPin_a_3, OUTPUT); pinMode(ledPin_a_4, OUTPUT); // NOTE: Grounding on virtual pins 14 and 15 (analog pins 0 and 1) will set the Hour and Mins. pinMode( 14, INPUT ); // set the virtual pin 14 (pin 0 on the analog inputs ) SET HOURS digitalWrite(14, HIGH); // set pin 14 as a pull up resistor. pinMode( 15, INPUT ); // set the virtual pin 15 (pin 1 on the analog inputs ) SET MINUTES digitalWrite(15, HIGH); // set pin 15 as a pull up resistor. pinMode( 16, INPUT ); // set the virtual pin 16 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(16, HIGH); // set pin 16 as a pull up resistor. pinMode( 17, INPUT ); // set the virtual pin 17 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(17, HIGH); // set pin 17 as a pull up resistor. pinMode( 18, INPUT ); // set the virtual pin 18 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(18, HIGH); // set pin 18 as a pull up resistor. pinMode( 19, INPUT ); // set the virtual pin 19 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(19, HIGH); // set pin 19 as a pull up resistor. // Open serial communications: if( _DEBUG ) Serial.begin(57600); Serial.println("test no RTC"); // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); // This line allows you to manually adjust the time } void SetSN74141Chips( int num2, int num1 ) { int a,b,c,d; // set defaults. a=0;b=0;c=0;d=0; // will display a zero. // Load the a,b,c,d.. to send to the SN74141 IC (1) switch( num1 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; default: a=1;b=1;c=1;d=1; break; } // Write to output pins. digitalWrite(ledPin_0_d, d); digitalWrite(ledPin_0_c, c); digitalWrite(ledPin_0_b, b); digitalWrite(ledPin_0_a, a); // Load the a,b,c,d.. to send to the SN74141 IC (2) switch( num2 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; default: a=1;b=1;c=1;d=1; break; } // Write to output pins digitalWrite(ledPin_1_d, d); digitalWrite(ledPin_1_c, c); digitalWrite(ledPin_1_b, b); digitalWrite(ledPin_1_a, a); } // Fade in/out times .. Values set for IN-17 Nixie Bulbs float fadeMax = 5.0f; float fadeStep = 0.3f; int NumberArray[6]={0,0,0,0,0,0}; int currNumberArray[6]={0,0,0,0,0,0}; float NumberArrayFadeInValue[6]={0.0f,0.0f,0.0f,0.0f,0.0f,0.0f}; float NumberArrayFadeOutValue[6]={5.0f,5.0f,5.0f,5.0f,5.0f,5.0f}; void DisplayFadeNumberString() { if( _bUSE_COLONS == 1 ) { digitalWrite(ledPin_a_1, HIGH); digitalWrite(ledPin_a_2, HIGH); digitalWrite(ledPin_a_3, HIGH); digitalWrite(ledPin_a_4, HIGH); SetSN74141Chips(0,0); delay(1.8f); SetSN74141Chips(1,1); delay(1.8f); SetSN74141Chips(2,2); delay(1.8f); SetSN74141Chips(3,3); delay(1.8f); digitalWrite(ledPin_a_1, LOW); digitalWrite(ledPin_a_2, LOW); digitalWrite(ledPin_a_3, LOW); digitalWrite(ledPin_a_4, LOW); } else { digitalWrite(ledPin_a_1, HIGH); delay (10); digitalWrite(ledPin_a_1, LOW); } if( _bUSE_CROSSFADE == 1 ) { // Anode channel 2 - numerals 0,3 SetSN74141Chips(currNumberArray[0],currNumberArray[3]); digitalWrite(ledPin_a_2, HIGH); delay(NumberArrayFadeOutValue[1]); SetSN74141Chips(NumberArray[0],NumberArray[3]); delay(NumberArrayFadeInValue[1]); digitalWrite(ledPin_a_2, LOW); // Anode channel 3 - numerals 1,4 SetSN74141Chips(currNumberArray[1],currNumberArray[4]); digitalWrite(ledPin_a_3, HIGH); delay(NumberArrayFadeOutValue[2]); SetSN74141Chips(NumberArray[1],NumberArray[4]); delay(NumberArrayFadeInValue[2]); digitalWrite(ledPin_a_3, LOW); // Anode channel 4 - numerals 2,5 SetSN74141Chips(currNumberArray[2],currNumberArray[5]); digitalWrite(ledPin_a_4, HIGH); delay(NumberArrayFadeOutValue[3]); SetSN74141Chips(NumberArray[2],NumberArray[5]); delay(NumberArrayFadeInValue[3]); digitalWrite(ledPin_a_4, LOW); } else { // Anode channel 2 - numerals 0,3 SetSN74141Chips(currNumberArray[0],currNumberArray[3]); digitalWrite(ledPin_a_2, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_2, LOW); // Anode channel 3 - numerals 1,4 SetSN74141Chips(currNumberArray[1],currNumberArray[4]); digitalWrite(ledPin_a_3, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_3, LOW); // Anode channel 4 - numerals 2,5 SetSN74141Chips(currNumberArray[2],currNumberArray[5]); digitalWrite(ledPin_a_4, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_4, LOW); } if( _bUSE_CROSSFADE == 1 ) { // Loop thru and update all the arrays, and fades. for( int i = 0 ; i < 6 ; i ++ ) //equal to & of digits { //if( NumberArray[i] != currNumberArray[i] ) { NumberArrayFadeInValue[i] += fadeStep; NumberArrayFadeOutValue[i] -= fadeStep; if( NumberArrayFadeInValue[i] >= fadeMax ) { NumberArrayFadeInValue[i] = 0.0f; NumberArrayFadeOutValue[i] = fadeMax; //affects the refresh cycle currNumberArray[i] = NumberArray[i]; } } } } else { for( int i = 0 ; i < 6 ; i ++ ) { currNumberArray[i] = NumberArray[i]; } } } // Defines long SSECS = 10000; // sub seconds long SECS = 1000; // milliseconds in a Sec long MINS = 60; // 60 Seconds in a Min. long HOURS = 60 * MINS; // 60 Mins in an hour. long DAYS = 12 * HOURS; // 24 Hours in a day. > Note: change the 24 to a 12 for non military time. long runTime = 0; // Time from when we started. // default time sets. clock will start at 12:34:32:10. This is so we can count the correct order of tubes. long clockHourSet = 01; long clockMinSet = 00; long clockSecSet = 00; long clockSSecSet = 00; int HourButtonPressed = false; int MinButtonPressed = false; //////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////// void loop() { // Get milliseconds. runTime = millis(); //int ssTime = millis(); int hourInput = digitalRead(14); // 2 buttons int minInput = digitalRead(15); if( hourInput == 0 ) HourButtonPressed = true; if( minInput == 0 ) MinButtonPressed = true; if( HourButtonPressed == true && hourInput == 1 ) { clockHourSet++; HourButtonPressed = false; } if( MinButtonPressed == true && minInput == 1 ) { clockMinSet++; MinButtonPressed = false; } // Get time in seconds. // NOTE: Change this value from 1000 to a lower number to slow down the clock to debug. long time = (runTime) / 1000; // Set time based on offset.. long hbump = 60*60*clockHourSet; long mbump = 60*clockMinSet; time += mbump + hbump; // Convert time to days,hours,mins,seconds long days = time / DAYS; time -= days * DAYS; long hours = time / HOURS; time -= hours * HOURS; long minutes = time / MINS; time -= minutes * MINS; long seconds = time; long sseconds = 0; // Get the high and low order values for hours,min,seconds. int lowerHours = hours % 10; int upperHours = hours - lowerHours; int lowerMins = minutes % 10; int upperMins = minutes - lowerMins; int lowerSeconds = seconds % 10; int upperSeconds = seconds - lowerSeconds; int lowerSSeconds = sseconds % 10; int upperSSeconds = sseconds - lowerSSeconds; if( upperSSeconds >= 10 ) upperSSeconds = upperSSeconds / 10; if( upperSeconds >= 10 ) upperSeconds = upperSeconds / 10; if( upperMins >= 10 ) upperMins = upperMins / 10; if( upperHours >= 10 ) upperHours = upperHours / 10; if( upperHours == 0 && lowerHours == 0 ) { upperHours = 1; lowerHours = 2; } // Fill in the Number array used to display on the tubes. NumberArray[5] = upperHours; NumberArray[4] = lowerHours; NumberArray[3] = upperMins; // Slot four is used for dots .. should get them blinking ?? !! NumberArray[2] = lowerMins; NumberArray[1] = upperSeconds; NumberArray[0] = lowerSeconds; DisplayFadeNumberString(); } |
в программе надо включить отладку – после программирования открыть монитор порта, проверить номера выводов – анодными ключами управляют ножки d11 d12 d13 а d10 только на неонку – он будет работать если включить 8 ламп.
Если ардуинно не работает или не так как надо – включить его к компьютеру, запустить программу и открыть монитор порта.
И еще там много интересного отображается – например сколько циклов за секунду выполняется программа, какие там задержки – включен ли режим плавного переключения. (78 циклов в секунду)::
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 |
// fading transitions sketch for 8-tube board with default connections. // based on 6-tube sketch by Emblazed // 09/03/2010 - Added Poxin's 12 hour setting for removing 00 from hours when set to 12 hour time // 06/16/2011 - 4-tube-itized by Dave B. // 08/19/2011 - modded for six bulb board, hours, minutes, seconds by Brad L. // 01/28/2013 - expanded to 8 digit crossfade by Brad L. // 12/04/2014 - First V2 standardization version by Brad L. // 01/07/20 Program for a 6-digit, K155ID1-based alarm clock; // 2021 6 digit 3+3 ,2 id1 // arduino 8v - 78l05 fail? connect working pins?️ #include <TimeLib.h> #include <EEPROM.h> #include <Wire.h> // SN74141 : Truth Table K155ID1 H H H H - off //D C B A # //L,L,L,L 0 //L,L,L,H 1 //L,L,H,L 2 //L,L,H,H 3 //L,H,L,L 4 //L,H,L,H 5 //L,H,H,L 6 //L,H,H,H 7 //H,L,L,L 8 //H,L,L,H 9 #define _DEBUG 1 #define _bUSE_COLONS 0 #define _BULB_COUNT 6 #define _bUSE_CROSSFADE 1 #define _BrightnessLevelDelay 7.14 // 100.0f / 14.0f // SN74141 (1) int ledPin_0_a = 2; int ledPin_0_b = 3; int ledPin_0_c = 4; int ledPin_0_d = 5; // SN74141 (2) int ledPin_1_a = 6; int ledPin_1_b = 7; int ledPin_1_c = 8; int ledPin_1_d = 9; // anode pins // NOTE: V1 board has this order flipped a-1 pin 10 not use / use for colon - 2 bulb in3 int ledPin_a_1 = 10; int ledPin_a_2 = 11; int ledPin_a_3 = 12; int ledPin_a_4 = 13; void setup() { pinMode(ledPin_0_a, OUTPUT); pinMode(ledPin_0_b, OUTPUT); pinMode(ledPin_0_c, OUTPUT); pinMode(ledPin_0_d, OUTPUT); pinMode(ledPin_1_a, OUTPUT); pinMode(ledPin_1_b, OUTPUT); pinMode(ledPin_1_c, OUTPUT); pinMode(ledPin_1_d, OUTPUT); pinMode(ledPin_a_1, OUTPUT); pinMode(ledPin_a_2, OUTPUT); pinMode(ledPin_a_3, OUTPUT); pinMode(ledPin_a_4, OUTPUT); // NOTE: Grounding on virtual pins 14 and 15 (analog pins 0 and 1) will set the Hour and Mins. pinMode( 14, INPUT ); // set the virtual pin 14 (pin 0 on the analog inputs ) SET HOURS digitalWrite(14, HIGH); // set pin 14 as a pull up resistor. pinMode( 15, INPUT ); // set the virtual pin 15 (pin 1 on the analog inputs ) SET MINUTES digitalWrite(15, HIGH); // set pin 15 as a pull up resistor. pinMode( 16, INPUT ); // set the virtual pin 16 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(16, HIGH); // set pin 16 as a pull up resistor. pinMode( 17, INPUT ); // set the virtual pin 17 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(17, HIGH); // set pin 17 as a pull up resistor. pinMode( 18, INPUT ); // set the virtual pin 18 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(18, HIGH); // set pin 18 as a pull up resistor. pinMode( 19, INPUT ); // set the virtual pin 19 (pin 1 on the analog inputs ) FREE TO USE AS INPUT OR OUTPUT digitalWrite(19, HIGH); // set pin 19 as a pull up resistor. // Open serial communications: if( _DEBUG ) Serial.begin(57600); Serial.println("test no RTC"); // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); // This line allows you to manually adjust the time } void SetSN74141Chips( int num2, int num1 ) { int a,b,c,d; // set defaults. a=0;b=0;c=0;d=0; // will display a zero. // Load the a,b,c,d.. to send to the SN74141 IC (1) switch( num1 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; default: a=1;b=1;c=1;d=1; break; } // Write to output pins. digitalWrite(ledPin_0_d, d); digitalWrite(ledPin_0_c, c); digitalWrite(ledPin_0_b, b); digitalWrite(ledPin_0_a, a); // Load the a,b,c,d.. to send to the SN74141 IC (2) switch( num2 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; default: a=1;b=1;c=1;d=1; break; } // Write to output pins digitalWrite(ledPin_1_d, d); digitalWrite(ledPin_1_c, c); digitalWrite(ledPin_1_b, b); digitalWrite(ledPin_1_a, a); } // Fade in/out times .. Values set for IN-17 Nixie Bulbs float fadeMax = 5.0f; float fadeStep = 0.3f; int NumberArray[6]={0,0,0,0,0,0}; int currNumberArray[6]={0,0,0,0,0,0}; float NumberArrayFadeInValue[6]={0.0f,0.0f,0.0f,0.0f,0.0f,0.0f}; float NumberArrayFadeOutValue[6]={5.0f,5.0f,5.0f,5.0f,5.0f,5.0f}; int impressionsPerSec = 0; //loop time int oddsec=0; byte lastSec; // unsigned long nowMillis = 0; unsigned long lastCheckMillis = 0; int lastImpressionsPerSec = 0; void DisplayFadeNumberString() { if( _bUSE_COLONS == 1 ) { digitalWrite(ledPin_a_1, HIGH); digitalWrite(ledPin_a_2, HIGH); digitalWrite(ledPin_a_3, HIGH); digitalWrite(ledPin_a_4, HIGH); SetSN74141Chips(0,0); delay(1.8f); SetSN74141Chips(1,1); delay(1.8f); SetSN74141Chips(2,2); delay(1.8f); SetSN74141Chips(3,3); delay(1.8f); digitalWrite(ledPin_a_1, LOW); digitalWrite(ledPin_a_2, LOW); digitalWrite(ledPin_a_3, LOW); digitalWrite(ledPin_a_4, LOW); } else { } if( _bUSE_CROSSFADE == 1 ) { // Anode channel 2 - numerals 0,3 SetSN74141Chips(currNumberArray[0],currNumberArray[3]); digitalWrite(ledPin_a_2, HIGH); delay(NumberArrayFadeOutValue[1]); SetSN74141Chips(NumberArray[0],NumberArray[3]); delay(NumberArrayFadeInValue[1]); digitalWrite(ledPin_a_2, LOW); // Anode channel 3 - numerals 1,4 SetSN74141Chips(currNumberArray[1],currNumberArray[4]); digitalWrite(ledPin_a_3, HIGH); delay(NumberArrayFadeOutValue[2]); SetSN74141Chips(NumberArray[1],NumberArray[4]); delay(NumberArrayFadeInValue[2]); digitalWrite(ledPin_a_3, LOW); // Anode channel 4 - numerals 2,5 SetSN74141Chips(currNumberArray[2],currNumberArray[5]); digitalWrite(ledPin_a_4, HIGH); delay(NumberArrayFadeOutValue[3]); SetSN74141Chips(NumberArray[2],NumberArray[5]); delay(NumberArrayFadeInValue[3]); digitalWrite(ledPin_a_4, LOW); } else { // Anode channel 2 - numerals 0,3 SetSN74141Chips(currNumberArray[0],currNumberArray[3]); digitalWrite(ledPin_a_2, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_2, LOW); // Anode channel 3 - numerals 1,4 SetSN74141Chips(currNumberArray[1],currNumberArray[4]); digitalWrite(ledPin_a_3, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_3, LOW); // Anode channel 4 - numerals 2,5 SetSN74141Chips(currNumberArray[2],currNumberArray[5]); digitalWrite(ledPin_a_4, HIGH); delay(_BrightnessLevelDelay); digitalWrite(ledPin_a_4, LOW); } if( _bUSE_CROSSFADE == 1 ) { // Loop thru and update all the arrays, and fades. for( int i = 0 ; i < 6 ; i ++ ) //equal to & of digits { //if( NumberArray[i] != currNumberArray[i] ) { NumberArrayFadeInValue[i] += fadeStep; NumberArrayFadeOutValue[i] -= fadeStep; if( NumberArrayFadeInValue[i] >= fadeMax ) { NumberArrayFadeInValue[i] = 0.0f; NumberArrayFadeOutValue[i] = fadeMax; //affects the refresh cycle currNumberArray[i] = NumberArray[i]; } } } } else { for( int i = 0 ; i < 6 ; i ++ ) { currNumberArray[i] = NumberArray[i]; } } } // Defines long SSECS = 10000; // sub seconds long SECS = 1000; // milliseconds in a Sec long MINS = 60; // 60 Seconds in a Min. long HOURS = 60 * MINS; // 60 Mins in an hour. long DAYS = 12 * HOURS; // 24 Hours in a day. > Note: change the 24 to a 12 for non military time. long runTime = 0; // Time from when we started. // default time sets. clock will start at 12:34:32:10. This is so we can count the correct order of tubes. long clockHourSet = 01; long clockMinSet = 00; long clockSecSet = 00; long clockSSecSet = 00; int HourButtonPressed = false; int MinButtonPressed = false; //////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////// void loop() { // Get milliseconds. runTime = millis(); // shows us how fast the inner loop is running impressionsPerSec++; if (abs(runTime - lastCheckMillis) >= 1000) { lastImpressionsPerSec = impressionsPerSec; impressionsPerSec = 0; oddsec = oddsec+1; if (oddsec == 2) { digitalWrite(ledPin_a_1, HIGH); oddsec=0; } else { digitalWrite(ledPin_a_1, LOW); } // delay (10); // Serial.print(year(), DEC); // Serial.print('/'); // Serial.print(month(), DEC); // Serial.print('/'); // Serial.print(day(), DEC); // Serial.print(" ("); // Serial.print(daysOfTheWeek[dayOfTheWeek()]); // Serial.print(") "); Serial.print(hour(), DEC); Serial.print(':'); Serial.print(minute(), DEC); Serial.print(':'); Serial.print(second(), DEC); Serial.println(); Serial.print(lastImpressionsPerSec); Serial.println(); digitalWrite(ledPin_a_1, LOW); lastCheckMillis = runTime; //once per second run } //int ssTime = millis(); int hourInput = digitalRead(14); // 2 buttons int minInput = digitalRead(15); if( hourInput == 0 ) HourButtonPressed = true; if( minInput == 0 ) MinButtonPressed = true; if( HourButtonPressed == true && hourInput == 1 ) { clockHourSet++; HourButtonPressed = false; } if( MinButtonPressed == true && minInput == 1 ) { clockMinSet++; MinButtonPressed = false; } // Get time in seconds. // NOTE: Change this value from 1000 to a lower number to slow down the clock to debug. long time = (runTime) / 1000; // Set time based on offset.. long hbump = 60*60*clockHourSet; long mbump = 60*clockMinSet; time += mbump + hbump; // Convert time to days,hours,mins,seconds long days = time / DAYS; time -= days * DAYS; long hours = time / HOURS; time -= hours * HOURS; long minutes = time / MINS; time -= minutes * MINS; long seconds = time; long sseconds = 0; // Get the high and low order values for hours,min,seconds. int lowerHours = hours % 10; int upperHours = hours - lowerHours; int lowerMins = minutes % 10; int upperMins = minutes - lowerMins; int lowerSeconds = seconds % 10; int upperSeconds = seconds - lowerSeconds; int lowerSSeconds = sseconds % 10; int upperSSeconds = sseconds - lowerSSeconds; if( upperSSeconds >= 10 ) upperSSeconds = upperSSeconds / 10; if( upperSeconds >= 10 ) upperSeconds = upperSeconds / 10; if( upperMins >= 10 ) upperMins = upperMins / 10; if( upperHours >= 10 ) upperHours = upperHours / 10; if( upperHours == 0 && lowerHours == 0 ) { upperHours = 1; lowerHours = 2; } // Fill in the Number array used to display on the tubes. NumberArray[5] = upperHours; NumberArray[4] = lowerHours; NumberArray[3] = upperMins; // Slot four is used for dots .. should get them blinking ?? !! NumberArray[2] = lowerMins; NumberArray[1] = upperSeconds; NumberArray[0] = lowerSeconds; DisplayFadeNumberString(); } |
еще в программе переключился режим на плавную смену цифр – и меньше стало моргание: 47 переключений в секунду цифры немножко дергаются а 78 намного меньше заметно. еще нет антиотравления катодов и вывода другой информации – будет. Вот что делалось с этой программой – датчик освещения и уменьшение яркости, подключение неонок вместо двоеточия между минутами и секундами, 6 или 4 лампы на универсальной плате для 8 ламп. (есть еще посложнее конструкция – сделал на ИН1 она внизу страницы).
Чтобы выводить точное время и температуру к ардуино цепляется микросхема ds3231 – часы реального времени, и она работает от круглой 3-вольтовой батарейки больше 3 лет – все 10 даже, ошибаясь на секунду за год если температура не меняется. Термостат пока не делаем, а вот измерение температуры с этой микросхемы можно сделать – и показывать например на 5 секунде на 3 секунды. Как поставлю – добавлю в программе и еще 2 кнопки – сейчас вместо них проволочки замыкают на фольгу – общий провод с выводов A0 A1 и устанавливают часы и секунды. С Далласом один раз настраивается, записывается в него – батарейка только и 2 диодика нужно, и все работает, програмку установки можно закомментировать или не нажимать кнопки.
доработки – датчик расстояния или лидар – включение по приближению (или если кто то есть в помещении), работа от батареи 4s12p – без электро розетки, установка времени по gps или по интернету и если нет часов точного времени ds3231 с отдельной батарейкой 3 вольта – она включается через 2 диодика – плюсы к батарее и к питанию 5 вольт а минусы к выводу батарейного питания ds3231 . c этой микросхемой ставить время с интернета не обязательно, уход времени на + – 10 секунд за год не очень большая ошибка обычно.
как начать работать с Ардуино – скопируйте эту строчку и в Яндекс.
Начало работы с Arduino. 1. Скачайте Arduino IDE с официального сайта (http://arduino.cc/en/Main/Software) 2. Если у вас Windows и Arduino IDE из zip-файла, установите драйверы из папки drivers 3. Подключите Arduino к компьютеру через USB 4. Запустите Arduino IDE 5. В «Tools → Board» выберите модель вашей платы 6. В «Tools → Serial Port» выберите порт, куда она подключена 7. Пишите программу.
Начало работы с Arduino
madk.mskobr.ru›3-Konspekt хакера Эксперименты.pdf
платка Ардуино нано совместимая – это скопировать в поисковую строку Алиэкспресс (или Чип и Дип или в список покупок на рынке).
список почти всех деталюшек и инструментов.
Тестер, паяльник припой канифоль лупа, маленькая дрель или шуруповерт. сверла насадки ножовка отвертки.
(осциллограф анализатор спектра, lcr измеритель, заводской блок питания если бюджет сойдется.)
4 аккумулятора 18650 лучше HG2
2 платы ардуино
транзисторы mpsa42 mpsa92 или аналоги по 10
ne555
mc34063 тоже штук 5 а то и 10. На первое время хватит.
резисторы 330к 100к 33к, 470 ом, 560к, 1к, 4к7, 20к -1ватт, остальные 1/4 ватта , 0.22 ома 2 ватта на фото он есть –
2 полоски красные и серебристая. По 20 хватит.
Конденсаторы электролиты 2200 мкф на 16 вольт или 25в , 680 мкф на 16 – 2 штуки,
Металлопленочные или другого типа например к73-17 350в 1 мкф (600 вольт 0.5мкф если будет декатрон)
Керамические 100нф штуки 4 по питанию, 300пф 470пф, 47 пф 1кв или 33пф ,остальные низковольтные обычные.
Катушки индуктивности или дроссели можно как купить так и найти в сломаном блоке питания нпример . Надо только их замерить чтобы были 100-300 микрогенри и довольно толстым проводом 0.5 мм хотя бы. На снимке зеленое кольцо от фильтра на 5 ампер и ферритовая катушечка со сгоревшей платы материнки 100 мкг 3а. На мощность не меньше 5 ватт, второе на ватта 2. Да еще забыл К155ИД1 – в магазинах появляются и еще лампы. ИН12 ИН14 Ин16 это маленькие. ИН1 ИН18 -самые большие. Немножко с запасом – они все производства 1970-х годов, а то и 1964 как у меня МЭЛЗ – электроламповый завод в Москве, есть из Ровно с Украины, есть из Брянска и может и еще где делали.
Подключение микросхемы часов к Ардуино – здесь
Конструкция из самых частых повторений – сделай сам.
вот еще –
https://www.instructables.com/Portable-LED-Lamp/
светильник с диммером.
Здесь на странице – https://yahobby.ru/фонарик-на-светодиоде/ это чуть посложнее, не первый раз собирать. Там есть рассчет и побольше выбор деталек. Получается фонарь 600 900 люмен то есть как мощная лампа 60 ватт а то и 90 но раз в 15 экономичнее и работает несколько часов а не 20 минут как недорогие изделия. И светит не в одну точку а более рассеяно.
поиск конспект хакера. Конспект у студента а у хакера программатор ноутбук и часы. На плазменных лампах.