Jump to content

Устройство импульсного заряда/разряда АКБ на МК PIC (Эх, заряжу - 01)


Recommended Posts

29401410_m.jpg 29401411_m.jpg 

какой вариант заказывать?

можно образец работы зарядника на энкодоре(видео)?

и конечно же охото печатную плату)

ттл старый прошивочный кабель телефона на мах232(кажется) сгодится?  надо для прошивки дисплея?

5.5В разве выдает обычный lm7805? насколько больше увеличится диапазон регулировки? а то я до этого с ОУ не делал

Edited by roma_BLR
Link to comment
Share on other sites

14 часов назад, Kornei сказал:

регулировку напряжения в режиме БП

это сделать нельзя.

12 часов назад, roma_BLR сказал:

какой вариант заказывать?

у второго проще монтаж, на борту есть свой стабилизатор. Главное чтобы поддерживал протокол SPP и скорость 115200 baud .

И поинтересуйся у продавца какая скорость стоит по умолчанию. (будет легче настраивать)

12 часов назад, roma_BLR сказал:

на мах232(кажется) сгодится? 

 нужен TTL UART;  переходники на max232  это rs232.

стоит переходник 1$. например

Работает с целевым устройством 3,3 В и 5 В.

12 часов назад, roma_BLR сказал:

надо для прошивки дисплея

нет, он нужен чтобы настроить Bluetooth (скорость, имя, pass.)

12 часов назад, roma_BLR сказал:

5.5В разве выдает обычный lm7805

диод в земле добавляет 0,5В.

12 часов назад, roma_BLR сказал:

диапазон регулировки?

не регулировки а измерения. Зависит от конкретного экземпляра ОУ.  Например при при максимальном диапазоне в 0-10А  порежет его до 0-8А. 

12 часов назад, roma_BLR сказал:

и конечно же охото печатную плату)

у меня печатная плата будет под корпус ssop28.  Так что под dip28 можете потихоньку сами разводить. 

DS18B20 подключен к RA4, схема стандартная.

Link to comment
Share on other sites

Приглашаем на вебинар «Необычное в обычном. Сравнительный анализ современных решений Recom» (27.01.2022)

Приглашаем 27/01/2022 всех желающих посетить вебинар, посвященный двум наиболее растущим сегментам интегрированных источников питания – AC/DC малой мощности (1-20Вт) и сегменту решений PoL без изоляции. На вебинаре рассмотрим проблему выбора AC/DC в бюджетном сегменте и концепцию тестирования ускоренного старения, проведем сравнительный анализ подходов к интеграции AC/DC модулей. Сделаем обзор решений концепции POL с доисторических времен до современных технологий и средств для разработки и тестирования.

Подробнее

31.01.2020 в 22:22, postaloi сказал:

Закупаем:

- jdy-30 или jdy-31 // Bluetooth serial pass-through module

- TTL адаптер для ПК // у меня CH341A

- bss138 // для согласования логических уровней 3,3 и 5в

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

- i2c 1602 // можно и не ставить

- энкодер // можно и не ставить

- стабилизатор MCP1702 // можно и LM7805  но с первым будет лучше

- стабилизатор +5,5В // можно и не ставить - а запитать ОУ от +5 В - диапазон измерения будет меньше.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Номиналы КУ ОУ будут пересчитаны.

СХЕМА: 9.01.spl7 60 kB · 15 скачиваний

 

Забыл еще про DS18B20

Здравствуйте Postaloi. Прошу уточнить по поводу ттl адаптера. Вы используете програматор в качестве ttl адаптера? А можно ли использовать програматор pik-2 в качестве ttl адаптера, т.к такой как у Вас  нодо будет покупать  или делать? Заранее спасибо.

Link to comment
Share on other sites

Решения Infineon для беспроводного электроинструмента с бесщеточными электродвигателями

Современные строительные электроинструменты достигают высокой производительности и эргономичности благодаря использованию мощных бесщеточных электродвигателей и литий-ионных аккумуляторов. Для реализации сложных алгоритмов питания таких двигателей и управления ими компания Infineon предлагает решения, позволяющие создавать оборудование, отвечающее самым современным требованиям, предъявляемым к технике подобного класса.

Подробнее

22 часа назад, iaviav сказал:

использовать програматор pik-2 в качестве ttl адаптера

нет

22 часа назад, iaviav сказал:

Вы используете програматор

Я использую это:

CH341A-mode-select.jpg.3cf128d43af5af32bdae2a4f539c7048.jpg

Можно дешевле: вот опять

Edited by postaloi
Link to comment
Share on other sites

Стандарт LoRaWAN и его использование в России с контроллерами STM32WL

Стандарт сетевого уровня LoRaWAN технологии LoRa одобрен для применения в России и отвечает требованиям региональных сетевых операторов. Компания STMicroelectronics выпустила линейку беспроводных однокристальных контроллеров серии STM32WL c поддержкой модуляции LoRa. Серия STM32WL имеет цифровые и аналоговые периферийные устройства для приложений, требующих высокой энергоэффективности и возможностей связи на достаточно большие расстояния, подходя для широкого спектра промышленных и потребительских приложений.

Подробнее

Разработка преобразователей на основе карбид-кремниевых приборов с помощью симулятора SpeedFit 2.0

Компания Wolfspeed разработала бесплатный онлайн симулятор SpeedFit 2.0, позволяющий разработчикам быстро и всесторонне оценить параметры основных процессов, происходящих в силовой части импульсных преобразователей электрической энергии, и сравнить между собой различные варианты реализации поставленного технического задания.

Подробнее

Заитересовался тоже очень собрать такой же агрегат. У меня есть тяговые АКБ 24В и 48В до 1000А/Ч, и просадка у них уже очень хорошая. Видал такой агрет на одной фирме. Говорят реально работает.https://youtu.be/7X3mbbyLzkU

Link to comment
Share on other sites

postaloi  Здравствуйте!  Заказал  недостающие запчасти на ЗУ , подскажите или что-то получится  то что ми обговаривали раньше, если да я бы начал делать платы спасибо.

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Здравствуйте  postaloi  набросал схему в протеусе на 12В с драйвером работает на 100В почему-то не показывает открытия транзисторов. Плату драйвера сделал проверил работает. Посмотрите может что-то  не так нарисовал. Схему буду делать на ОУ это на резисторах нарисовал для пробы.

ЗУ.rar

Link to comment
Share on other sites

Здравствуйте  postaloi. Хочу сделать защиту по току набросал схемку подскажите или  можно сделать чтоб на свободный порт пример RA7 вывести защиту  по току при появлении на порту  лог 1 или 0 импульсы сбрасывались, а защиту настраивать сколько нужно. Дорогие транзисторы поэтому хочу чтоб чем-то защитить.СПАСИБО.

защита.7z

Edited by vladimir1962
Link to comment
Share on other sites

  • 3 weeks later...

а зачем выставлена такая большая контрастность, что все знакоместа ярко видны?

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Charger_100V.hex

- установка тока в "А", а не емкости АКБ

1.PNG.dddf47800053dcfe81c00f29a18e9ba1.PNG

- включил защиту по току (была отключена)

- таймер (в настройках) действует для всех режимов

2.PNG.c6721279b32735558704793a699378a9.PNG

 

19.03.2020 в 20:01, vladimir1962 сказал:

защиту  по току при появлении на порту  лог 1 или 0 импульсы сбрасывались, а защиту настраивать сколько нужно

Может проще просто блокировать драйвер?

3.PNG.c6b54f9adfdc821a6212d7d75b335751.PNG

 

Link to comment
Share on other sites

схема с др 100 в.7z

Через драйвер импульсы будут блокироваться при превышении тока  и снова работать при  снижении  тока, мне кажется что будет так, тогда лучше через RESET подключить защиту.

 

Edited by Starichok
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Сообщения

    • Я это понимаю. Зависит от температуры аккумулятора, остаточной ёмкости, и его возраста.  Просто интересно какие они бывают?  Наверно с функцией Амперметра сгодится? Ну и плюс по часам ориентироваться время заряда от ПБ Если я знаю физическую ёмкость бака, то там значит уже находится (допустим) 40л. У меня есть большой такой ПБ, на нём написано 20 Ач большими цифрами, и 12.7 маленькими. Внутри 6 банок без маркировки ёмкости, но 2 из них не припаяны совсем, пустышки, в них песок (вскрывал и офигел от такого обмана). С годами ёмкость у аккумулятора снижается, а ёмкость бензобака не мняется со временем (если баком на бордюр на упасть). Вот вот. О да, они могут изменить своё отношение, или просто ... С чего телефон берёт те цифры в процентах? Если как любой показометр индицирует напряжение, то с годами ёмкость снижается, и как было раньше на простых телефонах с тремя палочками на индикаторе батареи,Ю все они полные, а как начинаешь звонить уменьшаются и телефон вырубается. Вот вот, меткое наблюдение, ведь при стабильных 5в от источника, по мере зарядки уменьшается ток. Но есть нюанс, что это несколько не то что автомобильный АКБ заряжать от источнпика стабильных 14в, или в телефоне, где контроллер зарядит до 4.2в при входящих 5в. Значит разбег по напряжению есть, и ток будет вроде достаточный для ускоренной зарядки.
    • А ты чего жабрами шевелишь? Когда новая архитектура УМЗЧ будет?
    • Добрый ! Доделал ТБ, ПП с форума, селектор входов на 4 канала, БП с дежуркой управление вкл одной кнопкой. Корпус от сгоревшего коммутатора, красил сам из баллончика после грунтовки. Передняя панель дюралевая полоса толщиной 2мм, приклена на старую панель. Отверстия и шлифовка Дима Акнодик, за что ему огромное спасибо (ну захотел я квадратные кнопочки). По итогу передняя панель покрыта матовым лаком. Ручки выбираю из полукруглых выточенных  и прямых цилиндриков из китая. Немного фото.
    • Чёрт знает что.)) При чём тут дины?
    • Ломаются они под корень, то есть отламывается вся винтовая часть, но есть способ улучшить ситуацию. Нужно самому аккуратно отломить половину винтовой части сверла и заточить его алмазным надфилем, тогда ломаться сверло будет намного реже. Пользовался успешно этим методом, когда был советский патрон с биениями.
    • Отлично сказано. Кратко и исчерпывающе. Немного позанудствую и дополню Вообще, обратноход, ИМХО, это гениальное изобретение. Просто и надёжно. Защита там в самой топологии. Во-первых, мощность, которую может передать обратноходовый трансформатор, она задана размером сердечника и частотой коммутации. И выше этой мощности не прыгнешь. Поэтому в случае КЗ первичка трансформатора не раскалится, силовой ключ останется работать в штатном режиме(максимальное заполнение, предусмотренное разработчиком). В общем, ничего плохого не произойдёт. Но есть нюанс. Т.к. обратноходовый трансформатор передаёт определённую мощность(а не напряжение и ток), то при КЗ и просадке напряжения во вторичной цепи, ток может подняться до очень больших значений. примерно P^2/(падение напряжения на диоде + P*(активное сопротивление вторички)) и выжечь этот самый диод. И тут в игру вступает обмотка самозапита. Т.к. напряжение на ней является по сути отражённым напряжением от вторички и равняется U2 * (n_самозапита/n2). Во-первых это избавляет от необходимости ставить мощные балластные резисторы в питании микросхемы. Но самой главной её фишкой является то, что в случае КЗ и падения напряжения на вторичке, автоматически падает напряжение на обмотке самозапита, контроллер вырубается до тех пор, пока через балластный резистор не зарядится конденсатор питания контроллера. Если к тому времени КЗ уже нет, то всё запускается и работает в штатном режиме. Поэтому кстати, когда свежесобранный БП цыкает и не запускается, в первую очередь нужно смотреть, достаточно ли напряжения на самозапитывающей обмотке и если нет, то уже искать причину.
    • Guest Владимир
      Доброго времени суток! Имеется ноутбук Yepo 737a6 в котором вздулись аккумуляторы. И я бы ждал спокойно новые из Китая или работал без них, но он не запускается при отключённом аккумуляторе (точнее бывает и запускается, но по своему усмотрению). Собственно вопрос, можно ли как-то обмануть контроллер, чтобы он позволил запустить ноутбук. Где-то мне попадался вариант припаять вместо банок делители на резисторах, но там было без подробностей. Надеюсь на вашу помощь.
  • Similar Content

    • By Falconist
      Уважаемые коллеги,
      немного "злоупотребил властью" и открыл отдельную тему, поскольку аналогичная тема на "Казусе" неожиданно получила достаточно большой резонанс (только "спасиб" - 148). Неоднократно отсылал туда, чтобы не дублировать одинаковые темы на разных форумах, но в связи с недавним усложнением регистрации на Казусе такая отсылка становится напряжной. Да и расползлась "та" тема до почти 800 постов, т.е. приблизилась к пределу "читабельности", при том что ещё почти столько же было выделено в 2 дочерние подтемы.
      Итак, "ближе к телу" (как говорил Ги де Мопассан).
      Схема зарядки (сразу предупреждаю!) не является абсолютно оригинальной, является гибридом статей М.Шумилова в "Радио".- 2009, № 1.- С.38-39; "Зарядное устройство из блока питания АТ-АТХ" и нескольких схем компьютерных БП АТ (варианты "А" и "В"), с датчиком тока на транзисторе.

      В третьем варианте ("С") использован принцип измерения тока заряда вторым компаратором самой TL494 ( http://kravitnik.nar...e/charge_4.html ).

      По принципу действия все они являются стабилизаторами тока с ограничением максимального напряжения на уровне 14,4 В. Выходной ток заряда может достигать 10...12 А с соответствующим трансформатором (ну уж не совсем "малюпусеньким"!). Эта зарядка НЕ ПРЕДНАЗНАЧЕНА для десульфатации, "тренировки" и прочих извращений, являющихся "тяжким наследием совейской действительности", когда стоимость нового аккумулятора была сопоставима с месячной зарплатой. Только чтобы подзарядить севший аккумулятор перед выездом после долгого стояния в гараже. А дальше - пусть справляется генератор самой машины. По этой же причине в ней нет и индикации тока заряда и напряжения - ток заряда в начале стабилен, задается для имеющегося аккумулятора, а перед концом начинает снижаться. Напряжение больше выставленных 14,4 В не вырастет. Ввести такие измерители не представляет никакого труда, но это уже вопрос моддинга.
      Все схемы построены по топологии АТ. Считаю с полным основанием, что дежурное питание для подобного сабжа, являющегося "вещью в себе", совершенно не нужно! Это ведь не компьютер, который должен находиться в дежурном режиме, чтобы иметь возможность включения по сети или звонку модема! БП АТ десятилетиями работали без нареканий.
      Оригинальной является только печатная плата.

      Она избыточна - для всех трех вариантов (некоторые детали просто не запаиваются, + устанавливаются перемычки.
      Распайка и сборка сабжа на новой плате может вызвать возражения, мол "проще выпаять ненужные детали на готовой плате, зачем городить огород?" Хорошо знакомо. Дело в том, что такой подход хорош для опытных любителей/профессионалов, хорошо знакомых с топологией печатных плат компьютерных ИИП. В этой связи для опытных могу порекомендовать отличнейшую статью на "Радиокоте по переделке ИИП. Малоопытные же встречают на этом пути серьезные трудности, времени иногда занимает намного больше с непредсказуемым результатом, вплоть до неработоспособности. Тоже хорошо знакомо. И чем меньше опыта, тем больше трудностей. Давайте не поднимать по этому поводу холивар. "Кому нравится поп, а кому - попадья"...
      Вторая причина: могут иметься в наличии несколько неработающих ИИП, каждый по себе не запускаемый, а вот детали от них "из общей кучи" могут быть целыми.
      Поскольку цоколевка управляющего трансформатора по "низковольной" стороне бывает самой разной ( http://forum.cxem.ne...showtopic=65531 ) - нужно внимательно рассмотреть топологию печатки-"донора" и скорректировать печатку в этой её части. Реле - на 30А (автомобильное), служит защитой от переполюсовки. Выходной дроссель перемотан проводом диаметром 1 мм - 30 витков (индуктивность около 56...62 мкГ).
      Единственными деталями, которые придется докупить, является выпрямительный полумост, который должен быть не менее, чем на 80...100 В обратного напряжения и на планируемый ток (те, которые стоят в канале +5 В - имеют слишком малое обратное напряжение, а в канале +12 В - слишком малый прямой ток), реле (в автомагазинах) и токоизмерительные резисторы по 0,1 Ом (вместо них можно поставить шунты от тестера или просто куска высооомного провода, хоть от электроплитки).
      Фото готового сабжа.

      В архиве - то же самое, в формате sPlan и SprintLayout.
      P.S. Планировалось по результатам обсуждения разработать гамма-версию, с опциональным режимом десульфатации, но из-за недостатка времени эта работа до конца не сделана. Разработана схема (вариант "D") с "жесткой" стабилизацией выходного напряжения (токоизмерительный резистор исключен из цепи стабилизации напряжения):

      По этой схеме изготовлены 2 ИИП на +12 и +5 В, суммарной мощностью до 60 Вт, с общим ограничением выходного тока на уровне 5 А, на плате размерами 70 х 100 мм.

      Эксперимент по заряду аккумулятора емкостью 45 А*ч с их помощью увенчался полным успехом. Однако, отсутствуют цепи питания кулера, защита от переполюсовки, плата нестандартная для корпуса компьютерного БП и т.п. Печатка на этот вариант и еще один (4 закладки, как в Экселе)
      На все вопросы отвечу, замечания и уточнения "по делу" приму с благодарностью.
      добавление от Starichok51:
      вот здесь я дал схему на свой Вариант Е:
      Charger_Acid_Auto.rar
    • By Super Akk
      Здравствуйте, я работаю в Proteus и у меня возникла ошибка Simulation is not running in real time due to excessive CPU load
      Подскажите пожалуйста как её исправить
      Код прошивки:
      #include <lm3s300.h> // Graphic Display functions #include <glcd.h> // Font used for displaying text // on the graphic display #include <font5x7.h> // Declare your global variables here void main(void) { unsigned char odin[] = { 0x08, 0x00, 0x08, 0x00, #ifndef _GLCD_DATA_BYTEY_ 0x00, 0x10, 0x18, 0x14, 0x10, 0x10, 0x7C, 0x00, #else 0x00, 0x00, 0x48, 0x44, 0x7E, 0x40, 0x40, 0x00, #endif }; // Declare your local variables here // Variable used to store graphic display // controller initialization data GLCDINIT_t glcd_init_data; // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=(1<<CLKPCE); CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Port C initialization // Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0); // State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Disconnected // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2A output: Disconnected // OC2B output: Disconnected ASSR=(0<<EXCLK) | (0<<AS2); TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20); TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (0<<CS20); TCNT2=0x00; OCR2A=0x00; OCR2B=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // Timer/Counter 2 Interrupt(s) initialization TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (0<<TOIE2); // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); EIMSK=(0<<INT1) | (0<<INT0); PCICR=(0<<PCIE2) | (0<<PCIE1) | (0<<PCIE0); // USART initialization // USART disabled UCSR0B=(0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (0<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR1=(0<<AIN0D) | (0<<AIN1D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); // SPI initialization // SPI disabled SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0); // TWI initialization // TWI disabled TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE); // Graphic Display Controller initialization // The KS0108 connections are specified in the // Project|Configure|C Compiler|Libraries|Graphic Display menu: // DB0 - PORTB Bit 0 // DB1 - PORTB Bit 1 // DB2 - PORTB Bit 2 // DB3 - PORTB Bit 3 // DB4 - PORTB Bit 4 // DB5 - PORTB Bit 5 // DB6 - PORTB Bit 6 // DB7 - PORTB Bit 7 // E - PORTC Bit 0 // RD /WR - PORTC Bit 1 // RS - PORTC Bit 2 // /RST - PORTC Bit 3 // /CS1 - PORTC Bit 4 // /CS2 - PORTC Bit 5 // Specify the current font for displaying text glcd_init_data.font=font5x7; // No function is used for reading // image data from external memory glcd_init_data.readxmem=NULL; // No function is used for writing // image data to external memory glcd_init_data.writexmem=NULL; glcd_init(&glcd_init_data); glcd_putimage(0,0, odin, GLCD_PUTCOPY); while (1) { // Place your code here } } Схема прикреплена ниже в архиве

      Схема.rar
    • By Н_Д_А
      Всем привет).
      Может, кому-то эта статья  сэкономит много времени и нервов. 
      Недавно  по работе встретился с интересной задачкой.
      Нужно было передать на железку по порту RS485 информацию для проверки работоспособности последней.
      Так как не всегда имеется в ремонте вся система, то для начала нужно было посмотреть, на заведомо исправной системе, что же там между ними (железками) передаётся.
      Логический анализатор показал что девайсы общаются по не совсем стандартному, а по  9ти битному протоколу (USART 9n1).
      А это усложняло задачу, так-так известные мне терминальные программы его не поддерживают.  И без бубна не обойтись))).
      Начались поиски решения.
      Через некоторое время стало понятно, что AVR позволяет это делать и даже в даташите подробно это описывает.
      Дело за малым. Реализация задуманного))). 
      Все регистры выставлены по документу………..Для Atmega8a.
      void USART_Init( unsigned int speed) //Инициализация модуля USART { UBRRH = (unsigned char)(speed>>8); UBRRL = (unsigned char)speed; UCSRB=(1<<RXEN)|( 1<<TXEN); //Включаем прием и передачу по USART UCSRB |= (1<<RXCIE); //Разрешаем прерывание при передаче UCSRA |= (1<<U2X); //удвоение скорости UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0); UCSRB |= (1<<UCSZ2); // Включаем 9bit режим // Обращаемся именно к регистру UCSRC (URSEL=1) // ассинхронный режим (UMSEL=0), без контроля четности (UPM1=0 и UPM0=0) // 1 стоп-бит (USBS=0), 8-бит посылка (UCSZ1=1 и UCSZ0=1) // если (UCSZ1=1 и UCSZ0=1 и UCSZ2=1) 9bit mode. // UCSRC |= (1<<UPM1);//четность } По даташиту передача 9го бита происходит установкой или сбросом TXB8. 
      То есть, установили бит, передаётся 1 в старшем 9ом разряде, сбросили – 0. 
      void USART_Transmit( unsigned int data ) // функция передачи 9ти бит из даташита. { /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ) ; /* Copy ninth bit to TXB8 */ UCSRB &= ~(1<<TXB8); if ( data & 0x0100 ) //не понял, что они хотели этим сделать. UCSRB |= (1<<TXB8); /* Put data into buffer, sends the data */ UDR = data; } И вот незадача, числа размером до 1 байт передаются без проблем, а числа больше 0xFF (255) нет).
      А устройство передаёт числа до 510.
      Предлагаю решение.  Может и не самое лучшее, но вполне работоспособное.
      int main(void) { USART_Init (103);//9600 //------------------------------------------------------------------------------------ while(1) { for (i=0; i<22; i++) { code_simbol = simbol[i]; //символ из массива //-------------------------------------отправка в UART-------------------------------- if (code_simbol > 255) { pr=1; // флаг передачи символа больше 0xff (255 десятичное) } else { pr=0; // флаг передачи символа меньше 0xff } USART_Transmit(code_simbol,pr);//собственно сама функция отаравки } } } А теперь и сама функция передачи .
      void USART_Transmit( unsigned char data, uint8_t prisnak ) //Функция отправки по USART { while ( !(UCSRA & (1<<UDRE)) ); //Ожидание опустошения буфера приема if (prisnak==1) { UCSRB |= (1<<TXB8); //устанавливаем для передачи еденицы в старшем разряде } else { UCSRB &= ~(1<<TXB8); //сбрасываем старший разряд } /* Put data into buffer, sends the data */ UDR = data; //Начало передачи данных asm volatile ("nop"); Соответственно если число для предачи мньше 256 мы передаём его при нулевом 9ом бите.
      Ну а если больше то 9й бит выставляем в единицу.
      А вот и результат.

       
    • By eyuw
      Б/у контролеры холодильной установки: 1) Eliwell 974LX  на atmega16A-PU , 3 реле - характеристики на фото.Цена 15 бел.руб. 2) Eliwell IDPlus974  на atmega32A-PU, 3 реле - характеристики на фото.Цена 18 бел.руб. Корпуса без передней панели закрывающей цифровой индикатор, без датчиков температуры! г.Толочин, Витебская обл. Отправка по Беларуси наложенным платежом. Покупатель также оплачивает почтовые расходы. 


    • By АртемК
      Уже весь интернет прошерстить, помогите найти, или где он приставует, чтоб его достать нужен очень срочно, или может у кого то есть куплю!

×
×
  • Create New...