Часы на светодиодных матрицах с драйверами MAX7219

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Ср янв 13, 2016 13:52:42
Откуда: Клин

Сообщение phoenix75 »

Кстати кому надо подключить DTH11 я нашел такое решение
Изменение в файле dth22.c.
Спойлер#include "dht22.h"

#include <util/delay.h>

static dht22Dev dev;

static uint8_t dht22Sensor = 0;

static int16_t humidity, temp;

void dht22Init(void)
{
DDR(DHT_DATA) &= ~DHT_DATA_LINE;
PORT(DHT_DATA) &= ~DHT_DATA_LINE;
}

static uint8_t dht22GetBit(void)
{
uint8_t i;

for (i = 255; i && !(PIN(DHT_DATA) & DHT_DATA_LINE); i--)
_delay_us(1); // Wait zero

for (i = 255; i && (PIN(DHT_DATA) & DHT_DATA_LINE); i--)
_delay_us(1); // Measure bit length

return (i < 230);
}

static uint8_t dht22GetByte(void)
{
int8_t i;

uint8_t ret = 0;

for (i = 0; i < 8; i++) {
ret <<= 1;
ret |= dht22GetBit();
}

return ret;
}

void dht22Read(void)
{
int8_t i;
uint8_t cksum;
uint8_t data;

dev.data[0] = dev.data[1] = dev.data[2] = dev.data[3] = dev.data[4] = 0;

if (!(PIN(DHT_DATA) & DHT_DATA_LINE)) // Line is busy
return;

DDR(DHT_DATA) |= DHT_DATA_LINE;
_delay_us(800);
DDR(DHT_DATA) &= ~DHT_DATA_LINE;
_delay_us(70);

if (PIN(DHT_DATA) & DHT_DATA_LINE) // No DHT22 response
return;

dht22Sensor = 1;

dht22GetBit(); // Wait for response finish

cksum = 0;
data = 0xFF;
for (i = 4; i >= 0; i--) {
data = dht22GetByte ();
dev.data = data;
if (i > 0)
cksum += data; // Checksum of first 4 bytes
}
//if (cksum == data) {
//humidity = dev.humidity;
//temp = dev.temp;
//if (temp & 0x8000) // Fix negative temp value
// temp = -(temp & 0x7FFF);
//}
//====================
if (dev.data[1]== 0 && dev.data[3]== 0) { //если эти переменные массива обе равны нулю,то это dht11
temp = dev.data[2]*10;
humidity = dev.data[0]*10;
}else { // dht22
humidity = dev.data[0] * 256 + dev.data[1];
temp = (dev.data[2] & 0x7F)* 256 + dev.data[3];
if (dev.data[2] & 0x80) temp *= -1;
}
//=========================

return;
}

int16_t dht22GetHumidity()
{
return humidity;
}

int16_t dht22GetTemp()
{
if(temp > 100){dht22Read();}
return temp;
}

uint8_t dht22HaveSensor(void)
{
return dht22Sensor;
}


Датчик у меня адекватно показывает в меру своих возможностей. Теперь по идее должно автоматически определять 11 и 22 датчики.
Просто 22-го дома нет, принесу проверю.

И кстати прошу помощи!!
Вот мои наработки в Atmel Studio 6.2 https://yadi.sk/d/fFWUxGkYy5KoH.
Проблема вот в чем, после считывания карты когда задействуется библиотека чена Petit FAT File System Module перестаёт работать бузер.
Что то молотит непрерывно, но на работе кроме бузера не отражается. Кто разбирается помогите советом. Может её как то приостановить можно? Постоянная работа её не нужна.
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 23
Зарегистрирован: Пн сен 05, 2016 01:35:34
Откуда: gomel

Сообщение shtvgomel »

Я прошил прошивкой "matrixclock_max7219_x3_atmega8" и получилось
http://img.radiokot.ru/files/118071/med ... 1idikb.jpg
часы перевёрнуты и не идут,показывает 00:00. Если отключить этот модуль (часовой), то время становиться 01:01, кнопки не управляют (только 2 кнопки при нажатии исчезает изображение).
http://img.radiokot.ru/files/118071/med ... 1k6y2m.jpg
Может у кого было такое и как решали.
кринж
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

А что это, часы не запитаны вообще? Я про VCC.

Почему-то средняя матрица развёрнута на 189° относительно других двух..

Поворачивать картинку можно одновременным нажатием всех трех кнопок.

Чтобы часы пошли,нужно настроить секунды.
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 23
Зарегистрирован: Пн сен 05, 2016 01:35:34
Откуда: gomel

Сообщение shtvgomel »

WiseLord писал(а):А что это, часы не запитаны вообще? Я про VCC.
Чтобы часы пошли,нужно настроить секунды.
Я питаю 5В. А как настроить секунды? Часы не реагируют нормально на кнопки - 2 кнопки переводят их в сонный режим что-ли (изображение анимировано уплывает и всё). Скажите, при программировании для внутреннего кварца кроме фьюзов ничего делать не надо? Может это дело в это модуле часовом? Я включал/отключал SDA и цифры менялись как я писал 01:01, но секунды не ишли. Просто цифры и всё.

Добавлено after 55 minutes 45 seconds:
после тряски бубном,простоя всё почти заработало, только вот весь текст идёт символами яяяяяяяяяяяя, как я понимаю это нужно перепрограммировать. В общем спасибо за такие часы, скажите, а как называется прошивка для 4 индикаторов.
кринж
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 22
Зарегистрирован: Вс май 06, 2007 20:47:05
Откуда: Ковель

Сообщение igorfirst »

shtvgomel писал(а): только вот весь текст идёт символами яяяяяяяяяяяя, как я понимаю это нужно перепрограммировать.
похоже что не прошит корректно eeprom
Реклама
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пн фев 04, 2008 12:38:54
Откуда: Шахты

Сообщение masy »

добрый день... парни, у кого нибудь есть плата индикации под 60мм матрицы, перелопатил тему что то не нахожу, а кажется кто то выкладывал)
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 22
Зарегистрирован: Вс май 06, 2007 20:47:05
Откуда: Ковель

Сообщение igorfirst »

igorfirst писал(а): а еще вопрос , если в редакторе еепрома включить галочки показывать температуру и влажность с DHT22 то даже без датчика отображается бегущей строкой и то и другое по 0.0 , ....
С этим разобрался , не было подтягивающего резистора к выводу Atmega PD3 , из за этого и писало без датчика DHT22 по - 0.0
Мучитель микросхем
Аватара пользователя
Сообщения: 400
Зарегистрирован: Чт мар 27, 2008 21:36:44
Откуда: Домодедово

Сообщение Hichkok »

masy писал(а): под 60мм матрицы
Только перемычек много
Вложения
last.zip
(100 КБ) 386 скачиваний
Пока коты едины они непобедимы
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пн фев 04, 2008 12:38:54
Откуда: Шахты

Сообщение masy »

Спасибо!
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 153
Зарегистрирован: Пт июн 20, 2008 18:27:08
Откуда: Украина,Запорожье

Сообщение vpashko »

Здравствуйте, ребят а собирал ли кто-то эти часы на RGB матрицах? Если нет, то подскажите как лучше организовать коммутацию цветов?
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Сб янв 23, 2016 10:30:29

Сообщение hector »

К таким модулям есть прошивка? :oops: Платку на атмеге к ним спаяю сам.
https://ru.aliexpress.com/item/MAX7219- ... 1b0b51e700

Тута вот автор то-же пишет про не годную точность "DS3231 AT24C32 IIC module precision Real time clock"
P.S. За 9 месяцев часы убежали вперед на 22 секунды (сверялось по синхронизированному времени винды).
http://ucprog.ucoz.ru/publ/10_malenkie_ ... y/1-1-0-11

Вероятно таки китайцы не калибруют свои DS3231 кристаллы. За 0.5$ вряд-ли они станут утруждать себя калибровкой :sleep:
https://ru.aliexpress.com/item/DS3231-A ... .58.utzg0h
Я пробовал уже два ихних модуля - у обоих точность на уровне обыкновенного часового кварца. +/- сколько-то (...ну уж сколько получилось... :beer: ) секунд в месяц. :kill:
"Легендарные" часовые кварцы с материнских плат будут поточнее DS3231 с Aliexpress.
Для сверки использую часы с DCF77, они идут абсолютно точно.
Вложения
IMG_20161113_110236821.jpg
(172.17 КБ) 689 скачиваний
Мучитель микросхем
Аватара пользователя
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

Сообщение max50 »

hector писал(а):К таким модулям есть прошивка?
Тут и тут почитайте.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 22
Зарегистрирован: Вс май 06, 2007 20:47:05
Откуда: Ковель

Сообщение igorfirst »

hector писал(а): P.S. За 9 месяцев часы убежали вперед на 22 секунды (сверялось по синхронизированному времени винды
.
Ну и чего ? нормальная точность , раз в год можно и подправить :))
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Сб янв 23, 2016 10:30:29

Сообщение hector »

Почитал даташит на DS3231, а там пишут:
- After reflow, not production tested ... 0–10 years ... ±5.0ppm.
Попросту говоря, сразу после изготовления (запекания) DS3231 ее может и калибруют. Но вот полежала она пару лет на складе, и может на ±5.0ppm (±158 секунд в год!!!) уйти частота ее внутреннего кристалла (после старения, устаканивания).
О Карл!! :shock:
МAXIM, конечно же, об этом знает. Для чего, собственно, и ввела в DS3231 калибровочные регистры.
Вообщем ларчик просто открылся.
Теперь становится совершенно очевидным, что без дополнительной калибровки использование DS3231 лишено всякого здравого смысла. Та-же лотерея, что и с обычным кварцем 32768кГц. :beer:
p.s. т.к. WiseLord не думает бороться с этим злом, надо переходить на DS1307 + вспоминать про подстроечные конденсаторы возле кварца. :roll:
Последний раз редактировалось hector Пн ноя 14, 2016 21:45:31, всего редактировалось 1 раз.
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск

Сообщение Radan »

С помощью калибровочного регистра можно изменить 32768 Гц всего лишь на +-0,3Гц!
Настоящие Далласовские можно подстроить на точно 32768, а вот китайские как повезёт.
Могут сильно отличаться, на несколько герц. Поэтому желательно перед установкой в часы проверить их на хорошем частотомере на предмет 32768.
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Сб янв 23, 2016 10:30:29

Сообщение hector »

Radan - у тебя чего, калькулятора нет?
+-0,3Гц для кварца 32768 Гц - это +-288 секунд в год для часов. Хватит с запасом для любой калибровки DS3231.
А без калибровки да, DS3231 - ничего выдающегося http://www.rtcs.ru/news_detail.asp?id=971
±2 минуты в год в реальных приложениях, как у меня и получилось. :(
Часы с возможностью суточной коррекции с шагом в 0.1с идут намного точнее.
По ходу DS1307+подстроечный конденсатор на кварце решат проблему точного хода часов. :)
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск

Сообщение Radan »

Если вместо 32768 на выходе отличие в несколько герц, а такое в китайских клонах замечено, никакая коррекция и калькулятор не поможет.
Разница в несколько секунд за сутки набегает!
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 251
Зарегистрирован: Сб янв 23, 2016 10:30:29

Сообщение hector »

Не дает уснуть старику эта дурацкая ds3231 :(
Может знает кто способ считать-поменять содержимое ее регистров калибровки??
Программаторы всякого рода-племени имеются. :?
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск

Сообщение Radan »

Программаторы не помогут.
В самом контроллере должна быть функция записи в часовую микросхему по адресу &H10 калибровочной константы от -128 до 127. По умолчанию там 0. И ещё, отключаем батарейку, значения регистров обнуляются.
Есть рабочий код на Баскоме.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

hector писал(а):Может знает кто способ считать-поменять содержимое ее регистров калибровки??
Да ровно так же, как читается/записывается время (часы, минуты и т.д.). Просто адрес ячейки другой.
Контактная информация:
Ответить

Вернуться в «Статьи»