• Объявления

    • admin

      Внимание! Постить только по теме "электроника"   02.09.2016

      Внимание! В данном разделе разрешено создавать только темы связанные с электроникой. Для проблем с ПО не связанных с электроникой существует специальный раздел.
      Нарушители будут забанены на 5 суток!
  • ×   Вставлено в виде отформатированного текста.   Восстановить форматирование

      Разрешено не более 75 смайлов.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Похожие публикации

    • Автор: ximik_se
      Всем привет.

      Решил сделать небольшую домашнюю метеостанцию.

      Есть приемник с экраном, куда выводится инфа (построено на ATMEGA 328P) и есть передатчик, который посылает инфу по возудху (построено на ATtiny85).

      В передатчике использую обычные DHT22. В принципе качество чуть ниже среднего. Но главный недостаток - порой сбоит, присылая данные в 2 раза больше предидущих, потом опять приходит в себя. и так повторяется постоянно.

      При этом время между измерениями не меньше 20 сек.

      В общем заказал я себе с Китаюшки более точные датчики - 

      CJMCU-1080 HDC1080
      Вещица прекрасная, но общается по I2C.

      А библиотеку рабочую под нее я смог найти только одну "ClosedCube_HDC1080.h" и никаких модификаций под ATtiny я найти не смог.

      Для ее работы соответственно нужен Wire.h

      В общем решил я его поковырять самостоятельно, хоть и не прогер. Забрался во внутренности ClosedCube_HDC1080.cpp и везде заменил Wire на TinyWireM (некий аналог Wire для ATtiny).

      И у меня даже получилось считывать валжность, но вот вместо температуры приходит гадость. Ибо при компиляции Arduino IDE ругалась на строку (я ее ниже в коде закомментировал)
      uint8_t buf[4]; for (int i = 1; i < (seconds*66); i++) { TinyWireM.beginTransmission(_address); TinyWireM.write(0x00); TinyWireM.endTransmission(); delay(20); TinyWireM.requestFrom(_address, (uint8_t)4); // TinyWireM.readBytes(buf, (size_t)4); } Ошибку пишет следующую:

      \ClosedCube_HDC1080.cpp: In member function 'void ClosedCube_HDC1080::heatUp(uint8_t)':

      \ClosedCube_HDC1080.cpp:81:13: error: 'class USI_TWI' has no member named 'readBytes'

      TinyWireM.readBytes(buf, (size_t)4);
      Может есть ребята более понимающие в коде и сумеющие победить эту проблему, чтобы и температуру этот датчик смог передавать через ATtiny85.

      Вот полный текст файла ClosedCube_HDC1080.cpp (уже замененный ну и строчка закоментирована):
      #include <TinyWireM.h> #include "ClosedCube_HDC1080.h" ClosedCube_HDC1080::ClosedCube_HDC1080() { } void ClosedCube_HDC1080::begin(uint8_t address) { _address = address; TinyWireM.begin(); // Heater off, 14 bit Temperature and Humidity Measurement Resolution TinyWireM.beginTransmission(_address); TinyWireM.write(CONFIGURATION); TinyWireM.write(0x0); TinyWireM.write(0x0); TinyWireM.endTransmission(); } HDC1080_Registers ClosedCube_HDC1080::readRegister() { HDC1080_Registers reg; reg.rawData = (readData(CONFIGURATION) >> 8); return reg; } void ClosedCube_HDC1080::writeRegister(HDC1080_Registers reg) { TinyWireM.beginTransmission(_address); TinyWireM.write(CONFIGURATION); TinyWireM.write(reg.rawData); TinyWireM.write(0x00); TinyWireM.endTransmission(); delay(10); } void ClosedCube_HDC1080::heatUp(uint8_t seconds) { HDC1080_Registers reg = readRegister(); reg.Heater = 1; reg.ModeOfAcquisition = 1; writeRegister(reg); uint8_t buf[4]; for (int i = 1; i < (seconds*66); i++) { TinyWireM.beginTransmission(_address); TinyWireM.write(0x00); TinyWireM.endTransmission(); delay(20); TinyWireM.requestFrom(_address, (uint8_t)4); // TinyWireM.readBytes(buf, (size_t)4); } reg.Heater = 0; reg.ModeOfAcquisition = 0; writeRegister(reg); } float ClosedCube_HDC1080::readT() { return readTemperature(); } float ClosedCube_HDC1080::readTemperature() { uint16_t rawT = readData(TEMPERATURE); return (rawT / pow(2, 16)) * 165 - 40; } float ClosedCube_HDC1080::readH() { return readHumidity(); } float ClosedCube_HDC1080::readHumidity() { uint16_t rawH = readData(HUMIDITY); return (rawH / pow(2, 16)) * 100; } uint16_t ClosedCube_HDC1080::readManufacturerId() { return readData(MANUFACTURER_ID); } uint16_t ClosedCube_HDC1080::readDeviceId() { return readData(DEVICE_ID); } uint16_t ClosedCube_HDC1080::readData(uint8_t pointer) { TinyWireM.beginTransmission(_address); TinyWireM.write(pointer); TinyWireM.endTransmission(); delay(9); TinyWireM.requestFrom(_address, (uint8_t)2); byte msb = TinyWireM.read(); byte lsb = TinyWireM.read(); return msb << 8 | lsb; }  
    • Автор: 55nlo
      Написать программу Асм атмега 1284.
      Фрагмент: после команды считать рабочий регистр (в котором может появиться число от 1 до 50) каждому числу  соответствует 4 значения  (это таблица) их нужно загрузить в четыре рабочих регистра для дальнейшей обработки)
       Где лучше хранить таблицу?
      Пример: считали 48  числа 5; 8; 21; 25
                      Считали 31 числа 4;  9; 11; 35
       
    • Автор: VisualNT
      Доброго времени суток!
      Может кто-нибудь объяснить, в чём смысл и преимущества использования специализированных программаторов для STM32 типа ST-Link и клонов, работающих по интерфейсам SWD/JTAG, если записать флеш можно прямо по UART/ISP или быстрее по USB (при его наличии)?
      Я так понимаю, что программаторы, кроме записи в память, ещё умеют выполнять отладку - и это их единственное отличие.
      А если отладка не нужна? Вернее, часто ли она используется при написании каких-нибудь маленьких прикладных программ типа реле времени? Я собираюсь развести свою печатную плату для STM32F107, а потом хочется поэкспериментировать с STM32F407ZGT - в них в обоих есть USB интерфейс, они оба есть в списке поддерживаемых USB DFU (согласно AN 3156). Но на форуме я прочитал, что пока все сидят на дискавери, в основном из-за того, что в ней есть встроенный программатор ST-LINK прямо на плате, но почему его наличие так важно и не заменяется возможностью программирования по UART/ISP или по USB? Есть ли какое-либо отличие кроме возможности отладки? Может быть, как и в случае со фьюзами у AVR, у STM32 есть какие-то функции/настройки, которые можно использовать/изменять только программатором ST-LINK?
      И да, разве скорость программирования по USB будет существенно ниже, чем по тому же JTAG или SWD?
      Заранее спасибо за ответы! Заранее предупрежу, чот с микроконтроллерами я раньше работал, но вот от ST что-то более-менее делал только на STM32F030...
    • Автор: Дуч
      Здравствуйте.
      Есть два программатора Pickit3. Один из них китайский клон, другой оригинал от Microchip.
      Китаец стирает калибровочную константу Pic12f629, а оригинал прошивает и проблем нет. Подскажите причину стирания константы?
    • Автор: Stellaris
      Доброго здравия всем участникам.
      Помогите разобраться.Прибор,управляемый контроллером LM3S5749,не хочет работать,требуя ТО, провести которое не представляется возможным.
      Уважаемые форумчане, подскажите как разобраться с этой проблемой. Перевести время назад с вторичного прибора не получается, может сделать сброс счётчика часов наработки ?,но из-за маленького опыта боюсь снести всю программу. Выручайте,помогите добрым советом.
  • Сообщения

    • С размещением показаний на дисплее немного разобрался (скрин1) Идею  я понял, спасибо, буду иметь ввиду. С этим я уже сталкивался, когда делал "показометр" для переделанного в лабораторный БП  АТХ.  Только делал в CVAVR на дисплее 1602. Нормально получилось. (скрин2) 100% согласен! Но до изучения таймеров ни как пока не дойду (со мной внуков трое:4, 6 и 8 лет - особо не разгуляешься). Еще раз спасибо тебе за полезные советы!  
    • Ну и ещё. При нынешнем Rg 0.65 чуйка упала всего на 0.34дб, для Rg0.2 это падение будет 0.107дб. Я дал цифры а решать вам.
    • Ты тормози по времени то ай-ай. Сказывай лучше камрад Леха на какие колонки слушали? На твои старые?
    • Добавлю WR30-48D5V5-F    WR30-48S12-F DC/DC: 48V-12V-30W   BXA75-48S05 DC/DC: 48V-5V-75W   BXA15-48S12-F DC/DC: 48V-12V-15W   PH150S48-24/STI Преобразователь постоянного тока в постоянный 150W 24V 6.3A   NFC10-24S05SI DC/DC: 24V-5V-10W   BXA3-24S12-FSI
    • Не надо искать скрытого смысла в моих фразах. Сердечник напрямую влияет на индуктивность и косвенно на Rg. На Rg напрямую влияет диаметр проволоки и косвеено длинна. Для номинального импеданса Z=8 допустимо Rg= 0.2ом. Zmax измерять без надобности. У вас довольно хороший кабель, такой желательно иметь и внутри ас.
    • На пробу, как всегда, демонтаж. Площадь=(Д.реб*Ш.реб* кол-во ребер*2)+(Д.опора*Ш.опора).  Радиатор 150х110 высота 14, основание 3 мм. Вес 265 г. 37 ребер, толщина ребра 1 мм, межреберье - 3 мм. Площадь около 1050 см. 6 отверстий с резьбой М4, цена 150. 5 штук.   Радиатор 170х30 высота 25, основание 4 мм. Вес 140 г. 6 ребер, толщина ребра 1,5 мм, межреберье - 4 мм. Площадь около 470 см.  3 отверстия с резьбой М3 на крайнем ребре, цена 80 руб/шт. 3 штуки. Радиатор 128х30 высота 25, основание 4 мм. Вес 115 г. 7 ребер, толщина ребра 1,5 мм, межреберье - 3+ мм. Площадь около 410 см.  3 отверстия с резьбой М3 на крайнем ребре, цена 60 руб/шт. 3 штуки. Радиатор 101х61 высота 7,5, основание 1+ мм. Вес 55 г. 27 ребер, толщина ребра 1+ мм, межреберье - 3- мм. Площадь около 260 см. 4 отверстия с резьбой М4, цена 40 руб. 5 штук. Радиатор 145х120 высота 25, основание 3+ мм. Вес 400 г. 18 ребер, толщина ребра 1,5+ мм, межреберье - 5 мм. Площадь около 1300 см. 7 отверстия с резьбой М4, цена 200 руб. 5 штук. Радиатор 225х140 высота 31, основание 7+ мм. Вес 1100 г. примерно 15 ребер, толщина ребра 2,5 мм, межреберье - 6 и 8 мм. Площадь около 1850 см. 8 отверстий с резьбой М6, цена 400 руб. 5 штук. Подошва с прорезями, см фото Может кому будет интересно еще один Радиатор 410х295 высота 52, основание 17 или 23 мм. Вес около 10 кг. 20+18 ребер, толщина ребра 3 мм, межреберье - 5 мм. Площадь около 8500 см. много отверстий с резьбой М4, цена 2000 руб. 3 штуки. Та часть, которую можно выделить - ровная подошва - 150х295 высота 52, основание 17 мм. Вес около 4-5 кг. 20  ребер, толщина ребра 3 мм, межреберье - 5 мм. Площадь около 4500 см.  
    • Кажется это ВОТ ТАКАЯ приблуда. И, схему на неё искать придётся очень долго...  Ага-да, для автоаккумуляторов она не годится.