Jump to content

Recommended Posts

Можно ли по такой схеме подключать реле к МК? В промышленных схемах ставят еще оптопару перед транзистором, это зачем?

post-151682-0-49323000-1358696502.png

Share this post


Link to post
Share on other sites

Руководство для разработчика приложений на базе STM32WB55

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

Читать статью

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

Share this post


Link to post
Share on other sites

А ведь ключ может упасть и поперек оптопары. Скорее всего защита от промышленных наводок и "гуляющих токов". Электрики в разных цехах не синхронизированы между собой, а фидеры одни. :)

Share this post


Link to post
Share on other sites
                     

Контроль в спящем режиме: повышение КПД батарейного питания с помощью DC/DC MAX17225 nanoPower

В статье описан практический опыт разработчика, применившего повышающий DC/DC-преобразователь MAX17225. В результате ряда практических экспериментов, потребовавших существенного обновления технической базы компании-разработчика, автор убедительно доказывает преимущества выбранного компонента и схемотехнической реализации. Увеличенное на 50% время автономной работы лучше других аргументов говорит об эффективности конвертеров MAX17225, а также о важности предварительной оценки элементной базы.

Подробнее

ДОбрый день :)

Использую:

- MicroCforPic

- jdm

- ic-prog

мк Pic16f84a

Программа:

void main() {
TRISB = 0 ;	 // set PORTB as OUTPUT
PORTB=1;
 while(1)		 // forever
		 {
		 PORTB = 0xff ;		 // turn all LEDs ON
		 Delay_ms(600) ;		 // wait 500 ms
		 PORTB = 0 ;			 // turn all LEDs OFF
		 Delay_ms(100) ;		 // wait 500 ms


				 PORTB = 0xff ;		 // turn all LEDs ON
		 Delay_ms(300) ;		 // wait 500 ms


			 PORTB = 0 ;			 // turn all LEDs OFF
		 Delay_ms(200) ;		 // wait 500 ms

		 }
}

Программа в протеусе нормально работает.- ну тут кто бы сомневался)

Программатор:

cirquit.gifphoto.jpg

Сама плата где проверяю

PIC16F84A-schematic.jpeg

На схеме проверки у меня кварц 4 мгц и кондері по 10 пф. Все остальное так как на схемах.

В чем проблема:

Программа в мк заливается и считывается без проблем. А вот почему то не работает проверочная схема со светодиодами.

Знаний не хватает, подскажите пожалуста :)

Edited by Инженер!Туленков

Share this post


Link to post
Share on other sites
В чем проблема:
1.даташит: таблица 6-2

2.даташит: рис.6-1

или нет?

Share this post


Link to post
Share on other sites

Точночть таймера. Запустил таймер1 на отсчет времени в пол секунды. Каждые полсекунды светодиод меняет свое состояние на противоположное в прерывании по совпадению таймера1. Проблема. По расчетам должно выходить пол секунды, но за минуту воемя МК убегает вперед на секунду. Тактируется от внутреннего генератора МК. Если я поставлю внешний кварц, время будет точнее тикать? И еще не знаю, как подключить внешний кварц в avrstudio4. Часовой кварц не предлагать, не имею возможности его подключить

Share this post


Link to post
Share on other sites

В симуляторе AVRStudio его подключать не нужно, достаточно выставить частоту в настройках, там она идеализированная и не уползает. Для контроллеров надо выставить соответствующие фузы (CKSEL=1111 вроде) и подключить кварц к ногам XTAL1, XTAL2, для начала можно и без конденсаторов (сейчас меня гуру побьют за такие советы). Ну и подогнать константы сравнения: если вместо аппаратного предделителя использовать программный можно подогнать период с точностью до одного такта, с аппаратным предделителем - грубее, но может хватить. У меня от кварца 16 МГц с предделителем 1/1024 получалась ошибка пара секунд за несколько часов. Там сверх-точность не требовалась поэтому точно не подбирал.

Вообще кварцы и ставятся для стабилизации частоты, они намного стабильнее RC-генераторов.

Share this post


Link to post
Share on other sites

Выставил вот эту строчку «ext. crystal/resonator high freq start-up time 1K CK+64 ms» прошил и все. Уже третий МК не работает (не прошивается). Что я сделал, расшифруйте пожалуйста каждое слово, если не трудно. И какую все же строчку нужно выставлять в AVRstudio, что бы потом работал МК.

дополнено: вот еще какая штука. Отключаю программатор. Дотрагиваюсь пальцем до кварца и диод загорается, но не моргает. Хотя от внутреннего генератора тактов все мигало. При подключенном программаторе светодион не загорается

Edited by snaut

Share this post


Link to post
Share on other sites

а ты собственно подключил кварц к контроллеру? Естественно без кварца он работать не будет: нет кварца - нет тактов...

Share this post


Link to post
Share on other sites

Может кварц нерабочий? Похоже что он не может стартануть кварц. Такое бывает если добротность кварца слишком маленькая. или не на те выводы повесил, проверь тщательно. Сделать его программируемым может помочь подача частоты в пределах 1Мгц и выше на один из выводов кварца.

Share this post


Link to post
Share on other sites

Всем спасибо, кварц заработал. Правда я так и не понял что было. Ноги перепутать не мог ибо на отладочной плате он стоит на покупной. И все вновь программироваться стало. Фигня какая-то не понятная)

Share this post


Link to post
Share on other sites

такое дела, нужно чтобы при ненажатой кнопке ничо не происходило, при нажатом мигал порт В

написал такой вот код

#include <mega8.h>
#include <delay.h>
void main(void)
{
while (1)
{	
DDRB = 0xff;
DDRC = 0x00;
if (PINC.4)
{
while (1)
{
PORTB = 0xff;
delay_ms(500);
PORTB = 0x00;
delay_ms(500);
}
}
else
{
PORTB = 0x00;
}
}
}

но мк читает кнопку только один раз, при включение (если нажата мигает, отпускаю продолжает мигать...если при включение кнопка не нажата то потом хоть жми хоть не жми он не читает её...)

помогите, среда CVAVR...

ПС Кнопка на 4 биту порта С

Edited by 22580

Share this post


Link to post
Share on other sites

а вы какой цикл удалили первый или второй? удалять второй!

Share this post


Link to post
Share on other sites

всё понял, заработало. Спасибо!

а я мудрил типа такого

#include <mega8.h>
#include <delay.h>
void main(void)
{
DDRB = 0xff;
DDRC = 0x00;
Start:
if (PINC.4)
{
while (1)
{
PORTB = 0xff;
delay_ms(500);
PORTB = 0x00;
delay_ms(500);
goto Start;
}
}
else
{
PORTB = 0x00;
goto Start;
}
}

лёгких путей не ищу :lol2:

Edited by 22580

Share this post


Link to post
Share on other sites

Извращенец, еще и заменил while(1) на goto который использовать вообще не рекомендуется (я-то знаю где его использовать можно не надо к этому придираться). Все делается в 12 строчек: код рабочий, проверено. Если кнопка PC4 нажата (лог.1) PORTB мигает, если отпущена (лог.0) замирает. Код под WinAVR, для других придется заменить заголовочные файлы и _delay_ms().

#include <avr/io.h>
#include <util/delay.h>
int main(){
DDRB=0xFF;
DDRC=0x00;
while(1){
 if(PINC & (1<<PC4)){
  PORTB ^= PORTB;
  _delay_ms(500);
 }
}
}

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. 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...

  • Similar Content

    • By Jesterary
      Здравствуйте. Подскажите, был ли у кого-то опыт отправки изображений с камеры (подключенной через UART или bluetooth-камеры) через GPRS (у меня модуль SIM800L, но в целом это не принципиально) на удаленный сервер? Средствами управляющего микроконтроллера, пусть даже ардуины какой-нибудь, но не малины. Возможно ли это вообще? Хотелось бы, конечно, использовать в проекте беспроводную камеру и общаться с ней, ибо камеры, подключаемые напрямую так себе качество дают. 
      Сразу скажу, что важна именно такая связь. Микроконтроллер + модуль связи + камера находятся в коробке и путешествуют по городу, в это время человек сидя дома на диване может смотреть фото с этой камеры. Смартфон для моих целей не подойдет, суть именно в микроконтроллере с модулями.
      Если у кого-то такое получалось - поделитесь, пожалуйста :)
      А то нахожусь в некоторой прострации и даже не знаю, в какую сторону думать.
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=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); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // 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 DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
  • Сообщения

    • Ну вот проверю это на железе, тогда и переделаю. Если дело только в частоте, то можно и сглаживание поставить. Или придумать что-либо ещё. Вам даже не показалось возможным, что кому-то легче учиться, имея наглядные примеры? Я и вправду неохотно воспринимаю информацию без наглядного представления что и зачем. С МК я работать уже умею, точнее изучил все основные принципы, и уже запрограммировал один из них на некотором уровне. С точки зрения ДШ уже тоже все, что хотел прочитал. Теперь мне хочется сделать для себя образовательную плату, на которой будет все нужное для работы, и уже дальше практиковать все это, ничего не отсоединял и не присоединяя. Дал питание, вставил провод в компьютер, и программирует на свое счастье сколько душе угодно. Может и ошибусь при разводке платы, но сильно боком мне это не выйдет, изучу проблему, переразведу и закажу новую исправленную. Немного денег уйдет, но дело того стоит. Да ничего не мешает, уже взял. Один на 100 ног, и в связку с ним ещё на 64. Для полного счастья. Скорее всего косяки будут, но мой путь "джедая" начнется с первого боя. Плохой опыт - на мой взгляд ни чуть не хуже, чем хороший, должно быть и то и то. Я изучаю гораздо быстрее, когда я заинтересован в информации и уже имею не абстрактное представление об изучаемом. И я очень долго и не спешно усваиваю информацию, когда плохо представляю конечный результат. Так что долго - понятие относительное. Я старательный в плане творчества, все успею. Но, конечно же, никому я подобный путь не предлагаю, тут все зависит от человека.
    • Да, об этом-то все забыли! Интересно, на сколько включений хватит? Только что если не выключать совсем...
    • и это правильное решение...  при таких напряжениях питания и токах КПД линейного и импульсного стабилизатора практически одинаков около 60-70% , но для работы линейник лучше. меньше нагрузка на глаза, тк нет мерцания.  
    • Ну так что будут дальше делать пробуждённые люди? ЧТО? Так же как и вы, сидеть и ждать, когда пыня сам испугается этот ваш пробуждённый народ и убежит со своими чемоданами, с которыми уже несколько месяцев в дверях стоит??? Ты же сам писал, что постоянно с ним консультируешься и перезваниваешься. Потом сообщил, что он из вертухаев. Но если бы ты и не заикнулся о нём, то и так понятно по многим признакам, что тебя кто-то использует в своих целях, вешая лапшу на уши. А мозгов у тебя мало, чтобы иметь своё мнение.
    • @KRAB Вы не учитываете один важный момент. Транзисторы, на которые была осуществлена замена отечественные. КТ-818 и КТ-819 в металле. Устанавливать их надо не тупо, а тщательно проверить. Попадается много брака. У меня штук 20 не паянных и в тоже время пробитых из запечатанной коробки. Особое внимание обратить на переход К-Э. Который должен иметь большое сопротивление как в прямом так и в обратном направлении. Как эти комплиментарные пары могут вести себя в схеме трудно что либо утверждать без предварительных замеров. Я не обладаю экстрасенсорикой, как Вы, поэтому не могу уверенно что-либо утверждать, а могу только предполагать. Похожее я встречал в Электроника 50У-017с.
    • Но там линейный стабилизатор, а не импульсный дроссельный трансформатор стабилизированный по току.
×
×
  • Create New...