Архів категорії: Схемотехніка

Макетна плата програмування мікроконтроллера

Це моя макетна плата для програмування мікроконтроллера Atmega8. Коли я розробляю новий пристрій я можу напаяти різних виводів і деталей до плати. Потім коли все вже зроблено – я їх відпаюю. Світлодіоди і кнопка залишаються завжди, тому що вони завжди знадобляться для перевірки чого-небудь.

Як відремонтувати microUSB

На жаль дуже часто microUSB або виходить із ладу, або просто відламується. При цьому ваш пристрій як мінімум перестає заряджати акумуляторну батарею і користуватись ним стає неможливо.

Саме таке трапляється з телефонами мого тата, тому я вирішив взяти бика за рога і почати ремонтувати телефони з поламаним портом microUSB замість покупки нових моделей.

Причини виходу з ладу порту microUSB

Основними причинами поломки microUSB є такі фактори

  1. Забруднення порту microUSB
  2. Надмірна сила впихання, перекос при вставлянні.
  3. Неякісний монтаж, пайка
  4. Брак порту
  5. Вичерпаний ресурс

Ось так хто носить телефон в робочих забруднених карманах, в порт microUSB забивається пил, земля, частинки тютюну, пісок. Порт стає важко вставити для досягнення контакту і передачі сили струму. Власник застосовує надмірну фізичну силу і як наслідом виламує порт. Тому треба зберігати таку техніку в чистоті.

Як саме я рекомендую ремонтувати.

Я рекомендую припаяти 2 тоненькі провідника до + і мінус порту microUSB, потім подавати на них струм 5 вольт за допомогою любого зовнішнього роз’єму. Чому саме так – тому що випаяти і припаяти новий порт microUSB можна лише феном-паяльником. Річ доволі рідкісна, навіть у радіолюбителів. А звичайним паяльником є ризик 50 х 50 % пошкодити (відпаяти, замкнути, залити, втопити) сосідні SMD-елементи.

Фотографії після ремонту

Таким чином можливо досягти успіху, маючи звичайний старенький паяльник, але з дуже тонко загострений жалом.

В місті де стояв microUSB – порт, де зараз 2 червоний провідника я особисто залив чорним термоклеєм, це буде оберігати місце пайки від відриву. Якщо провідники сильно не гнути (не гнути взагалі), то такий метод може служити роками.

Прогресивні ідеї

Найбільш прогресивною ідеєю по вирішенню цієї проблеми вважаю покупку і встановлення магнітного microUSB перехідника. Сам ще не купляв, але мій кузен і подруга вже користуються. Треба спробувати, можливо цей пристрій дасть довговічність для microUSB

Магнітний перехідник для micro USB.

Arduino Uno – купив для проекту підігрівання води

Спочатку купив датчик протоки на АліЕкспресс, бронзовий такий з пропеллером всередині. Там датчик Холла. І ще термодатчик.

Зробив проєкт на Atmega8 – все працює, але рядом радянський холодильник, від перешкод якого программа реально збивається і двічі чуть не підшмалила ТЕНи (зазвичай просто зависає і не включає обігрів).

Тому вирішив я провести перевірку, на скільки Ордуїно протистоятиме таким потужним перешкодам. Програма мало чим відрізняється від коду на AVR-GCC, переваг мало в Ардуіно. А саме лише 2

  1. Не потрібен програматор
  2. USART працює на борту через той же СОМ-порт.
Нижче скидаю код фінальної прошивки, яку скоро буду тестувати “на залізі”
int waterFlowNormal, minimumWaterFlow, TC2_OVF;
int afterReset = 0;
int heatOff = 7;
int heatOn = 4;
int transistor = 8;

void setup() {
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
pinMode(7, OUTPUT);
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
pinMode(transistor, OUTPUT);
pinMode(5, INPUT_PULLUP);
// timer2 setup from https://www.teachmemicro.com/arduino-timer-interrupt-tutorial/
TIMSK2 = (TIMSK2 & B11111110) | 0x01;
TCCR2B = (TCCR2B & B11111000) | 0x07;
// Timer/Counter 1 initialization
// Clock source: T1 pin Rising Edge
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: On
// Input Capture on Rising 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 = (1 << ICNC1) | (1 << ICES1) | (0 << WGM13) | (0 << WGM12) | (1 << CS12) | (1 << CS11) | (1 << CS10);
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;
OCR1BH = 0x00;
OCR1BL = 0x00;

//Serial.begin(9600);
minimumWaterFlow = 1;
}

ISR(TIMER2_OVF_vect) {
TC2_OVF++;
if (TC2_OVF > 30) { // 30 is 10 LED ttogles in 19 seconds
TC2_OVF = 0;
// Toggle LED
digitalWrite( 2, digitalRead( 2 ) ^ 1 );

//

if (afterReset < 100) {
afterReset++;
}
//code for timer counting impulses
if ( TIFR1 & (1 << TOV1 )) { // if it has been overflow
waterFlowNormal = 1; // because overflow means in was more than 65535 tics (real test leads from ~5 to ~30)
TIFR1 = (1 << TOV1 ); // clear the flag of overflow
}
else {
if ((short int)TCNT1 > minimumWaterFlow) {
waterFlowNormal = 1;
}
else {
waterFlowNormal = 0;
}
}
//Serial.println(TCNT1);
TCNT1 = 0; // clear in any case
}
}

void loop() {
if (afterReset < 6) {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(70);
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(60);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
if (waterFlowNormal == 1) {
digitalWrite(heatOff, LOW);
digitalWrite(heatOn, HIGH);
digitalWrite(transistor, HIGH);
}
else {
digitalWrite(heatOff, HIGH);
digitalWrite(heatOn, LOW);
digitalWrite(transistor, LOW);
}

}

В майбутньому хочу зробити індикацію температури води в градусах і винести показання до душу на 10 метрів від датчика протоки. Це дозволило б регулювати температуру з точністю до 1 градуса.

Власники газових котлів, в яких то виключається обігрів, то кип’яток ошпарює – стоять с стороні і смокчуть морозиво

UPDATE

Тести, проведені на дачі з працюючим холодильником довели, що Ардуіно ні разу не зависло. В основному коли включається холодильник, Ардуїно сприймає це як одиночний сигнал з датчика протоки і включає підігрів на 1 секунду. Також таке відбувається іноді коли спрацьовує накачування насоса (управляється механічним реле тиску, накачує до 2х атмостер).

Але виявлено, що іноді, коли включається реле підігріву, самі ТЕНи нагрівача не включаються. Можливо це стається у зв’язку з наявністю в обігрівачі захисту від перевищення температури. В любому випадку це вже не має відношення до Ардуіно.

Висновок – гарно спроектована плата не боїться сильних перешкод, в той же час на швидкоруч зліплена плата зазнає руйнівного впливу електромагнітних перешкод.

Расчет усилителя на транзисторе с общим эмитером (по-американски)

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

Как гласят наши (пост СССР) инструкции в учебниках, для расчета усилителя необходимо использовать выходную ВАХ транзистора, она выглядит вот так:

Рис 1. входная и выходная ВАХ биполярного транзистора.

Допустим я хочу рассчитать транзистор на UКЭ = 6,7 Вольт, как мне это сделать по такому маленькому, не точному графику? Более точных и больших графиков я не находил и вы не найдете. Из этого следует вывод: чтобы рассчитать усилитель, нужно сначала снять выходные характеристики транзистора!! (вполне возможно инженера при разработке схем так и делали). Я даже попытался построить схему для съема таких характеристик, но забил. Вот фото:

Фото 1-2. Попытка создать схему тестирования транзистора в режиме общий эмитер для получения ВАХ

А теперь перейдем к американцам, к пиндосам, которых много кто ненавидит. А ненавидят за то – что они лучше нас, и эта статья тому тоже улика. Есть такой автор – Хоровиц, и есть его многотомная книжка – исскуство электроники – Art Of Electronix Хоровіц Рус Том. На странице 119 приводится именно эта схема – как законченная, избавленная от недостатков и практичная (готова к использованию в реальной схеме). Почему Хоровиц считает именно эту схему достойной – нужно прочитать 5 страниц текста и понять. Я же только напишу, что делает каждая деталь в схеме.

Схема включения транзистора по американцу Хоровиц

Для чего нужна каждая деталь:

  1. R1 & R2 создают рабочее смещение напряжение базы транзистора, чтобы сигнал на выходе шёл по середине всего напряжения. Стабилизация по напряжению.
  2. C1 – чтобы не пропустить постоянный ток в транзистор
  3. RC – чтобы выставить необходимый ток колектора а так же чтобы колекторное напряжение покоя составляло половину напряжения питания
  4. RE – связан с RC, так же играет роль обратной связи (частичная передача выходного сигнала на вход)
  5. R3 – дает температурную стабильность, позволяет изменять коефициент усиления
  6. C2 – дает температурную стабильность, обратную связь по переменному току, значительно увеличивает коэфициент усиления

Константы:

  1. VE = 1V – напряжение на эмитере принимается равным 1 вольту для хорошей температурной стабилизации.
  2. VBE = 0.6V – напряжения перехода база-эмитер приблизительно равно 0,6 вольт.

Что нам дается:

  1. G – gain – усиление. Во сколько раз нужно усилить сигнал. Желательно выбирать поменьше, так будет меньшие искажения сигнала. Выбирать нужно с учетом транзистора.
  2. V – напряжение питания схемы
  3. fMIN – минимальная частота сигнала

Что мы выбираем:

  1. IQ – ток, который течет через коллектор и эмитер
  2. ß – оно же hFE, характеристика транзистора.

Помните, что мы работает в режиме малых сигналов в этой схеме. Очень часто в инструкциях к транзисторам уже указано рекомендуемое IQ и ß. Впринципе IQ = IC – ток коллектора. Картинка это показывает:

Расчет усилителя.

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

Формулы:

Вот эти формулы и решают, какие детали будут в схеме. Редактор формул – latex

Практический пример.

Рассчитаем такой усилитель, с такими параметрами.

  • Питание 18 вольт
  • Частоты 100 Гц – 1 Мгц
  • Коефициент усиления 50
  • Транзистор 2N3904

Посмотреть расчет можно по ссылке (картинка в новом окне)

Обновление 16 Июнь 2014 г. – разработан файл Эксель для расчета быстрого и автоматического. Скачать: /files/Eberr_Moll.zip

(в архив сунуть не хотел, но загружчик не видит расширения XLS)

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

Осциллограмма. Цветом показано амплитуды сигналов и шкала осциллографа. Из чего можно увидеть, что усиление приблизительно равно 50. Так как выходной сигнал инвертируется, была нажата кнопка (-).

Амплитудно–частотная характеристика (АЧХ):

АЧХ 1Гц – 200Мг (шкала частоты логарифмическая)


АЧХ 1Гц – 200Гц (шкала частоты линейная)

А вот и книга, которую можно скачать и почитать. Странице по книге 106-123, по DJVU-reader (SumatraPDF): 54-62 (их по две на листе) Art Of Electronix Horovic RUS tom 1 .djvu

AVR Studio GCC itoa and utoa

При программуванні ATmega8 я намагаюсь читати EEPROM. При завантаженні нової прошивки, мікроконтроллер стирається повністю і вся його память становить FFFFFFFFFFFF….

Тому мало б читатись число 65535, що відповідає unsigned short

Проте при передачі цього числа на UART я отримую -1 !!!

Виявилось, що функція itoa , яка по опису перетворює int в символи, насправді працює з таким діапазоном -32,768 to 32,767 – що відповідає в gcc типу short (short int).

Тупо і дивно, чи не так?

Ну вирішив проблему, використавши функцію utoa

Як описано, вона працює з unsigned int що відповідає unsigned short в коді програми!

Non-standard (i.e. non-ISO C) functions.
char * ltoa (long val, char *s, int radix)

char * utoa (unsigned int val, char *s, int radix)

char * ultoa (unsigned long val, char *s, int radix)

long random (void)

void srandom (unsigned long __seed)

long random_r (unsigned long *__ctx)

char * itoa (int val, char *s, int radix)

#define RANDOM_MAX 0x7FFFFFFF

Ну а тепер шматочки коду

void uart_sendint (unsigned short f)
{
char buffer [30]; // was [7]
char *p;
utoa(f,buffer,10);
p = buffer;
uart_puts( p );
}

uint16_t WordOfData ;
WordOfData = eeprom_read_word (( uint16_t *) 46) ; // 46 is the address
RAMWatFlowLimit = (unsigned short) WordOfData;
if (RAMWatFlowLimit == 65535) { // 65535 comes from clean FFFF eeprom
//RAMWatFlowLimit = 11;
}

Експеримент: генератор з підсилювачем на LM358

Генератор на емнісній трьохточці з транзистором у якості підсилювача зі спільним емітером по моделі Ебер-Молла і підсилювач на 1 половинці ЛМ358 неінвертуючий. В результаті одна півхвиля підсиллюється. Завдяки виходу через конденсатор, сигнал має змінний характер, тобто ходить через нуль. Загальна амплітуда 1 Вольт на навантаженні 4.7к резистор.

Загалом результат збігається з симуляцією в Multisim. Тільки амплітуда нижча і підсилення.

Амплітуди підсиленого сигналу вистачило, для того щоб поміряти його частотометром, а йому мінімум потрібно 0,6 Вольт. Частота по частотометру склала 8600 Гц. По осцилографу вона складає 8900 Гц. Звісно форма сигналу трохи не правильна, тому частота має право не збігатись.

На жаль є ознаки того, що частотометр поламався, спочатку пропали показники частоти від побудованої схеми, потім появились перешкоди, від яких рипіли колонки і ПК самовільно вийшов із режиму очікування.

А ось файл про модуль підсилювача на LM358

ИПСД-1 – источник питания (для пошуку: іспд, испд)

Источник питания марки ИПСД-1 (для пошуку: іспд, испд) вышел на рынок в 2012 году. Он представляет собой такое то устройство с такими то характеристиками.

Характеристики ИПСД-1

  1. Максимальное напряжение 18 вольт
  2. Максимальный ток 1.4 А при любом значении напряжения
  3. Защита от короткого замыкания
  4. Настраиваемое напряжение переключателем: 1.5; 3; 4.5, 5, 9, 12, 15 V
  5. Плавно настраиваемое напряжение 1.2-18 вольт.
  6. Амперметр с максимальным током показаний 550 мА
  7. Выход на бананы и тонкие стержни (например от тестера)
  8. Смена полярности напряжения переключателем
  9. Индикация включения

Схема ИПСД-1

Ниже представлена принципиальная схема (файл программы Diagram Designer ISPD_1.txt (сменить расширение на .ddd)) Также можете скачать програму Diagram Designer 1.26 и пакет русификации – DiagramDesignerSetup.exe LanguagePack.exe (проверил Касперским – программа доверенная).

Фото сборки:

Этот источник был обновлен – установлен ограничитель тока.