Jump to content

svd

Members
  • Content Count

    72
  • Joined

  • Last visited

Community Reputation

2 Обычный

About svd

  • Rank
    Осваивающийся
  • Birthday 05/31/1979

Информация

  • Пол
    Мужчина
  • Город
    КМВ

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    Радиосвязь, микроконтроллеры

Recent Profile Visitors

1899 profile views
  1. Плата размерами 100х100 мм рассчитана на установку 180 светодиодов, диаметром 5 мм с шагом установки 6 мм. На плате собран таймер для управления временем свечения. Таймер самый простой, без наворотов. Максимальная выдержка 99 мин 59 сек (с запасом под любые нужды). МК ATmega8A, кварц 7,3728 МГц. Индикатор "часовой", с двоеточием. Снят с китайской платы модуля TM1637. Но можно поставить любой 4-х разрядный индикатор 0,36" (вместо двоеточия будет работать точка во втором разряде). Тип индикатора выбирается при первом включении. "Фишка" платы в том, что изначально проектировалась на автономную работу от LiPO аккумулятора 3S через разъем XT-60 (на фото не установлен), или внешнего источника 12 В. Цена платы с учетом пересылки по РФ 600 руб. Покупателю будет направлена документация по сборке (схема и монтажка платы), а также прошивка. Платы делались для собственных нужд малой партией. В остатке 3 шт.
  2. Предлагаю печатные платы для паяльной станции на STM32 и OLED дисплее 1,3" версии 2.1S Плата делалась под китайский алюминиевый корпус. Тема, где обсуждается данная станция T12 , опубликована на сайте radiokot.ru Фото платы Схема немного доработана: 1) добавлены блокировочные конденсаторы 0,1 мкФ в цепях микроконтроллера; 2) добавлен резистор в цепи буззера для возможности снижения громкости; 3) есть возможность подключать жала JBC (для Т12 в разъеме паяльника запаивается перемычка) Большинство элементов типоразмера 0603. DC/DC преобразователь PSR-7805LF можно заменить на любой китайский аналог или микросхему 7805 Ссылки на возможные замены: DC/DC аналог 7805 №1 DC/DC аналог 7805 №2 Во вложениях схема и расположение элементов на ПП, чертеж передней панели и прошивка под дисплей 1.3" с контроллером SH1106. Цена за одну плату 400 руб c учетом стоимости пересылки по РФ. Количество плат ограничено. По всем вопросам просьба обращаться в личку. STM32_T12_2.1S_SSH1106_1.3_v2_.pdf передняя панель.pdf T12_HW21S_Encryption-SH1106.zip
  3. Все-таки с утра пришел к мысли, что без изучения цепи сброса не обойтись никак. Но я не стал с ходу ее вызванивать, а, вначале, решил проверить напряжение на выводе RES# и сравнить его с рабочим дисплеем, взятым у кума. Но так как я не знал пока какой вывод шлейфа отвечает за сброс, то пришлось искать хоть какую-нибудь схему. Такой схемой стала общедоступная от паяльника TS100. Только цепь сброса отличалась и была аналогично, как на выше приведенной схеме. И состояла из резистора, диода и конденсатора. Так вот! сразу скажу, ГРЁБАНЫЕ КИТАЙЦЫ!!!!!! Тут мат уместен, но боюсь не простят.... Проблема, как и предполагал, оказалась 100% железнячная. Подключив вольтметр в цепь сброса (пардон, осциллографа нет) я увидел офигительно медленное нарастание напряжения в цепи сброса. Сразу родилась догадка, что производитель на плате тупо поменял местами два резистора: подтягивающий к питанию 4,7 кОм для цепи сброса и 560 кОм в цепи IREF. Пришлось нудно и аккуратно прозванивать подключение всех резисторов на плате. Догадка оказалась верной. После перепайки дисплей стал работать адекватно. Единственное, яркость дисплея меньше, чем у взятого у кума. Я не знаю с чем это связано. Возможно сам по себе дисплей такой, может он вообще БУ (ну хз какие они паяют на модули ардуин, а, возможно, и неправильное подключение на него повлияло. Ну и в заключении, схема подключения дисплея. Так, что, если кто купит подобный дисплей бренда DM и маркировкой OLED-091 и, если, он сразу не запустится, то решение проблемы Вы уже знаете
  4. Это проблематично. Схема, что я привел, актуальна для дисплея 128x64. И то, номиналы элементов китайцы могут переиграть. Шлейф же дисплея 128*32 содержит 14 выводов, а не 30, как на схеме. Вызвонить который из них RESET вряд ли с ходу получится. Хотя общий принцип подключения такой же. На плате есть стабилизатор, есть 2 подтягивающих резистора. Явно есть мелкий диод. Дальше 7 конденсаторов и пара резисторов. И все. Даже нет перемычки для смены адреса Напрямую привязать код ардуины к себе в проект не смогу, но постараюсь докопаться, что за сброс дисплея они лепят. Спасибо за ссылку! Мне она не попалась при поиске решения проблемы в интернете.
  5. Да в ардуине может быть что угодно. Я не знаю, как работает пример из библиотеки Adafruit, но мой дисплей там инициализируется спустя минимум 3 секунды, второй же откликается мгновенно. Я не знаю, как работает библиотека. И опыта нет, чтобы разобраться в чужом коде, тем более на плюсах, у меня нет. Но в даташите нет команды сброса. Это я перепроверял много раз. Но даже если и есть костыли, чтобы заставить его сбросится, меня не устраивает столь долгая инициализация отображения. Если он с дефектом, или, что смешнее, там подделка контроллера SSD1306, то проще выкинуть его и заказать другой. Жаль только потерянного времени.
  6. Общий вид модуля покрупнее. На всякий случай
  7. Я удивляюсь просто.... В самом первом моём сообщении, первое предложение: "Нарисовалась у меня проблемка с модулем 128х32 I2C" я явно указал тип подключения индикатора. I2C бывает трехпроводным??? Питание не в счет. Естественно 4 пиновый разъем, который содержит выводы GND, VDD, SDA, SCK. PS. я тут на телефон видео записал, как стартуют два дисплея, включенные параллельно. Не знаю как видео прикрепить пока. Разберусь - выложу ролик. Там старт дисплеев наглядно виден PS2. что-то не мог войти на форум. Поэтому возможно появится второе аналогичное сообщение. Прошу модератора подчистить. У меня второй день при входе на форум с разных компов какие-то глюки. А ля Спилберг... Модули подключены параллельно. Нижний - это как раз тот дисплей, чо я взял у кума. Верхний - мой подопытный. VID-20191008-WA0006.mp4
  8. Не смешно. В сети есть подобная схема. Видно, что RESET привязан к питанию. И кроме как передергиванием питания эту ногу не достать.
  9. Вам сложно показать то место в даташите, о котором Вы говорите? И какие конкретно тайминги? Тайминги шины I2C или некие тайминги при передаче команд контроллеру SSD1306? Я привел и свою инициализацию, и блок-схему инициализации из даташита. Что я там пропустил? И, повторюсь в N-й раз, дисплей неадекватно работает даже с готовыми библиотеками ардуины! PS. Давайте так. От Вас точные инструкции где и что проверить в коде. По факту я перепишу код под Ваше разумение. И тогда либо я признаю, что я осёл и проглядел очевидное, либо будем с Вами на пару удивляться, где баг зарыт в этой железке. PS2. И как сделать RESET, если интерфейс I2C и вывод #RES физически недоступен?
  10. У меня их несколько. Самый полный SSD1306.pdf Пример инициализации для дисплея 128х32 я привел из файла TOL091G-12832X-1.pdf SSD1306.pdf TOL091G-12832X-1.pdf
  11. Даташит есть. Привожу картинку с него. Ни каких задержек там нет. Все задержки определены скоростью работы самой шины USI. А я ее пробовал от нормальной работы, до тормознутой для тини2313. Толку ноль. Да и опять же, при чем тут мой код, если дисплей не дружит даже с библиотеками ардуины?
  12. Хорошо, поскольку у меня мк ATtiny45 сейчас стоит на макетке, то я использую интерфейс USI. При его инициализации вначале идет инициализация самого порта согласно AN AVR310 PORT_USI |= (1<<PIN_USI_SDA); // Enable pullup on SDA, to set high as released state. PORT_USI |= (1<<PIN_USI_SCL); // Enable pullup on SCL, to set high as released state. DDR_USI |= (1<<PIN_USI_SCL); // Enable SCL as output. DDR_USI |= (1<<PIN_USI_SDA); // Enable SDA as output. Я попробовал после этих строчек поставить задержку в 500 мс, попробовал добавить установку в ноль этих линий порта. Толку нет никакого. Потому, как проблема явно не программная, а проблема конкретной платы модуля. Я же выше написал, что протестировал дисплей на базе платы ардуино. И на ней такая же проблема. Я не пользуюсь ардуино, о прикупил платку UNO именно для цели быстрой проверки различных модулей, на которые у меня нет собственной библиотеки. И, поскольку я не программист, то такая проверка помогает решать проблемы и выявлять я ли накосячил в коде, или железка не пашет. Только вот с этим дисплеем я эту проверку сразу не сделал. Иначе бы вернул бы деньги за неработающий модуль
  13. У контроллера по даташиту нет команды сброса. Порядок инициализации я привел выше. Поэтому никакой паузы я не делаю, кроме задержки 64мс при старте самого микроконтроллера (определено фузе битами). Сегодня удалось взять у кума такой же дисплей 128х32. Мой выполнен на плате с черной маской и маркировкой OLED-091, у кума модуль на синей платке. Ну и самое интересное, дисплей на синей плате работает как надо. Все-таки проблема в железяке. Работа обоих железяк проверена как на моей макетке и с моим кодом, так и на платке arduino uno с примером из библиотеки adafruit. На платформе arduino такая же проблема с моим дисплеем, не стартует сразу после подачи питания, после Reset все запускается.
  14. Нарисовалась у меня проблемка с модулем 128х32 I2C. Колупаюсь второй день. Вначале думал проблема в моём коде, но по факту пришел к выводу, что проблема в самом модуле. Итак, по-порядку... МК - ATtiny45. Драйвер USI_TWI интерфейса взят из AN AVR310. Начальные строчки в хидере выглядят так (полный код во-вложении) // Defines controlling timing limits #define TWI_FAST_MODE //max Fck/2 #define SYS_CLK 4000.0 // [kHz] //#define SYS_CLK 1000.0 // [kHz] ATtiny2313 #ifdef TWI_FAST_MODE // TWI FAST mode timing limits. SCL = 100-400kHz #define T2_TWI ((SYS_CLK *1300) /1000000) +1 // >1,3us #define T4_TWI ((SYS_CLK * 600) /1000000) +1 // >0,6us #else // TWI STANDARD mode timing limits. SCL <= 100kHz #define T2_TWI ((SYS_CLK *4700) /1000000) +1 // >4,7us #define T4_TWI ((SYS_CLK *4000) /1000000) +1 // >4,0us #endif // Defines controling code generating //#define PARAM_VERIFICATION //#define NOISE_TESTING #define SIGNAL_VERIFY //USI_TWI messages and flags and bit masks //#define SUCCESS 7 //#define MSG 0 Проблема в следующем. При подаче питания МК стартует и работает, согласно кода. Но при этом на дисплее ничего не отображается. Если произвести внешний сброс микроконтроллера, то все отлично выводится на дисплей. Цепь сброса МК содержит подтягивающий резистор 10 кОм, конденсатор 1 мкФ (установлен на случай медленно поднимающегося питания) и диода. Все согласно даташита. Инициализация дисплея ориентирована именно на индикатор 128х32. Я эти нюансы знаю и даташит имеется. При этом, если подключаю модуль 128х64, то все прекрасно работает. При чем что в режиме 128х32, что в режиме 128х64. Только в режиме 128х32 изображение выводится через строчку и поэтому выглядит растянутым по вертикали. У меня только два соображения: 1) либо схема включения отличается и нет какого-то "важного" элемента на модуле 128х32; 2) либо модуль дефектный сам по себе. Но почему тогда он адекватно и стабильно запускается при внешнем сбросе МК без снятия питания, а при подаче питания, наоборот, не запускается? Модуль бренда DM с маркировкой OLED-091 Есть адрес http://www.diymore.cc Но инфы я там не нашел. Только ценники на товар. Предвидя вопросы, добавлю инициализацию для 128х32 0xAE, // Выключить дисплей 0xD5, // Настройка частоты обновления дисплея 0x80, ///+----- делитель 0-F/ 0 - деление на 1 //+------ частота генератора. по умочанию 0x80 0xA8, // Установить multiplex ratio 0x1F, // 1/64 duty (значение по умолчанию), 0x1F - 128x32, 0x3F - 128x64 0xD3, // Смещение дисплея (offset) 0x00, // Нет смещения 0x40, // Начала строки начала разверки 0x40 с начала RAM 0x8D, // Управление внутреним преобразователем 0x14, // 0x10 - отключить (VCC подается извне) 0x14 - запустить внутрений DC/DC 0x20, // Режим автоматической адресации 0x00, // 0-по горизонтали с переходом на новую страницу (строку) // 1 - по вертикали с переходом на новую строку // 2 - только по выбранной странице без перехода 0xA1, // Режим разверки по странице (по X) // A1 - нормальный режим (слева/направо) A0 - обратный (справа/налево) 0xC8, // Режим сканирования озу дисплея // для изменения системы координат // С0 - снизу/верх (начало нижний левый угол) // С8 - сверху/вниз (начало верний левый угол) 0xDA, // Аппаратная конфигурация COM 0x02, // 0x02 - 128x32, 0x12 - 128x64 0x81, // Установка яркости дисплея 0xСF, // 0x8F..0xCF 0xD9, // Настройка фаз DC/DC преоразователя 0xF1, // 0x22 - VCC подается извне / 0xF1 для внутренего 0xDB, // Установка уровня VcomH 0x40, // Влияет на яркость дисплея 0x00..0x70 0xA4, // Режим нормальный 0xA6, // 0xA6 - нет инверсии, 0xA7 - инверсия дисплея 0xAF // Дисплей включен USI_TWI_Master_AVR310.zip
×
×
  • Create New...