МАРСОХОД

Open Source Hardware Project

Проекты Altera Quartus II для платы Марсоход

Генератор

В практической жизни иногда возникает необходимость измерения емкости конденсатора. Чип-конденсаторы, например, не имеют маркировки, и если ленту с конденсаторами своевременно не пометить, то их использование становится проблематичным. Такая-же ситуация и при демонтаже чип-конденсаторов, например, с материнских плат. Их там много, а использовать в своих разработках не зная их емкости невозможно. Самый простой способ - купить мультиметр с возможностью измерения емкости, но мы легких путей не ищем. Smile

Для оценки емкости можно использовать RC-генератор в котором частота колебаний зависит от параметров времязадающей цепи в которой есть конденсатор. Один из вариантов такого генератора можно собрать на логических элементах-инверторах по такой схеме:

generator

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

not

Если на вход такого элемента подать низкое напряжение (около 0), то верхний транзистор будет открыт, а нижний закрыт, поэтому на выходе будет высокое (VCC) напряжение, тоесть логическая единица. В случае, если на входе высокое (VCC) напряжение, то на выходе будет низкое(0), тоесть логический ноль. При изменении входного напряжения от 0 до VCC можно выяснить пороговое значение напряжения(Vpor), при котором элемент меняет свое состояние.В нашем конкретном случае мы будем использовать микросхему Альтеры MAX-II, EPM240T100C5 установленную на плате Марсоход, у которой между входом и выходом много подобных элементов, но свойства входа и выхода такие же, как и у простейшего.

Теперь о проекте. Рисуем схему нашего генератора в QuartusII. В качестве входа используем key3,прямой выход выводим на DP и led0 , инверсный - на DN. Кроме того, ставим семь десятичных делителей и выводим их старшие разряды на оставшиеся led1-led7. Компилируем, зашиваем плату.

Проект можно взять здесь: icon RC Генератор (50.7 Кбайт)

cap5

Посмотрите схему платы. Теперь, если в разъем USB между контактами key3 и DP установить конденсатор, а в разъем IR между контактами key3 и DN - резистор, то генератор должен начать колебаться. Сигналы на входе и выходе должны быть примерно такими:

 

grafik

В начальный момент времени конденсатор Ct полностью разряжен, и на выходе генератора 0. Затем через резистор Rt конденсатор начинает заряжаться, и в момент времени, когда напряжение на нем достигает Vpor, логические элементы генератора меняют свое состояние. Теперь на выходе генераторалогическая единица, и конденсатор начинает разряжаться, пока напряжение на нем не опустится до Vpor и элементы снова не изменят свое состояние. Таким образом, возникают периодические колебания,частота которых зависит от сопротивления резистора Rt и емкости конденсатора Ct.

Для того, чтобы оценить емкость неизвестного нам конденсатора нам, для начала, нужен известный,например на 1мкф. Далее нужно подобрать сопротивление резистора таким образом, чтобы частота колебаний генератора была около 10 Гц (у нас получилось 24кОм). При этом led1 должен моргать 1 раз в секунду.

cap1

Если вместо 1 мкф установить в десять раз меньше, то 1 раз в секунду должен моргать следующий разряд (led2) и так далее. При установке конденсатора с неизвестной емкостью по этому жепринципу сразу можно оценить ее порядок. Для более точных измерений можно посчитать числоимпульсов за секунду и сравнить с числом импульсов известного конденсатора того же порядка.

Из двух протестированных нами неизвестных конденсаторов один оказался на 1000пф, второй - 10мкф.

 cap2

  Вот так с помощью платы Марсоход можно оценивать значение конденсаторов.

 

Комментарии  

0 #6 Vizator 12.10.2012 20:37
блин незнаю как вставить весь код :cry:
0 #5 Vizator 12.10.2012 20:36
always@(step)be gin
case(step)
0:cntrl
0 #4 Vizator 12.10.2012 20:34
always@(posedge clk_interput or posedge n_step or posedge p_step)
begin
if(n_step) begin
step
0 #3 Vizator 12.10.2012 20:33
module motor_control(a uto_step,forwar d,ch_speed,clk_ interput,time_s tep,cntrl,n_ste p,p_step);

output reg [31:0]time_step ;
input auto_step;
input ch_speed;
input forward;
output reg [31:0] cntrl;
input n_step,p_step;
input clk_interput;
reg [1:0] step;
initial
begin
cntrl = 32'b00000000000 000000000000011 111111;
time_step = 32'd2000000;
step = 0;
end
+1 #2 Vizator 12.10.2012 20:32
Класс =). Задумался о ПЛИС как хобби (мк скучновато), и натолкнувшись на ваш сайт прикупил d0-nano =). И у вас закажу, пока будут ехать есть чем поиграть. Очень понравился проект, одно но хотелось бы в каждом проекте подробный алгоритм логики работы схемы, т.к. начинающему (например мне) тяжело разбираться в готовом проекте, итак голова пухнет от перестроения мышления из линейного программировани я в паралельное =). А где вам можно вопросы по теме плис чайниковские позадавать ? (если на почту, то я не против публикования переписки, чтобы сто раз не отвечать).
Например есть кусок кода (управления шаговиком, в вашем не разобрался):
0 #1 mcTopinambur 07.01.2011 14:21
точность как я понимаю 0,0 х.. повдоль?

Добавить комментарий


Защитный код
Обновить


GitHub YouTube Twitter