(*k diode, jejiz charakteristiku jste zmerili, pripojte zdroj napeti 5V v serii s odporem 200 Ohmu. Urcete, jake napeti bude na diode a jaky proud bude protekat diodou.  *)

(*  importuji data 
  Ctete si k tomu file pro_prvaky.txt 
   data jsou ve stejnem adresari jako notebook *.nb  *)
adresar = NotebookDirectory[]

SetDirectory[adresar]

data=Import["dioda_ruc.txt","Table"]

(*da rozum, ze tady musi byt spravna cesta k vasemu souboru. Desetinna tecka musi byt tecka, ne carka  *)

{{0,0},{1.53`,0.4`},{1.91`,3.35`},{1.93`,4.6`},{1.94`,4.79`},{1.99`,7.98`},{2.01`,9.94`}}

(*  tak data diody mame uspesne importovana v  data  *)

(* data si jenom tak cvicne vyneseme *)

ListPlot[data]

(* delam si vlastni funkci *)

idiody  [u_]:=a+(b*Exp[c*u])

(* a ted vyhledame parametry a,b,c tak, aby se ta funkce
   co nejvice blizila tem bodum 
Zatim nebadejte po tom, co je to Exp, nauci vas to v matematice *)

parametry = FindFit[data,idiody[u],{a,b,c},u]

parametry

(* A ted vyrobime dalsi funkci, ktera ma uz v sobe parametry ,a,b,c zabudovany *)

prouddiodou[u_] := idiody[u]  /. parametry

(* ta funkce se jmenuje prouddiodou, plotneme si ji *)

Plot[prouddiodou[x],{x,0,2.5}]

(*a ted si to plotneme i s bodama *)

Show[ListPlot[data],Plot[prouddiodou[x],{x,0,3}]]

(* ted si udelame zatezovaci cahrakteristiku zdroje proudu *)
ivyst[u_] := inula - u/ri

(* a jenom tak pro ukazku tam dame nejake hodnoty *)

inula= 25  (* protoze mam proud diodou v mA, udelal jsem i proud zdrojem v mA.  Samozrejme muzete od zacatku pocitat vsechno v A, ale to si musite predelat vstupni file s daty diody.
A proc asi mam 25 mA ?????? *)

ri = 0.200   (* a potom logicky vnitrni odpor musi byt v kiloohmech tohle je tedy 200 Ohmu *)

(*a na zkousku to plotneme *)
Plot[ivyst[x],{x,0,5}]

(* Schvalne:  proc jsem to dal plotnout jenom do 5V ????  *)
(* na oznaceni promennych ve funkci nezalezi, takze napeti je tady oznaceno x  *)

(* tady se nedivte, ze jsem k tomu pripojil zdroj proudu. Potrebuji totiz, aby na vodorovne ose bylo napeti stejne jako u diody. Ale zdroj proudu umite hrave prepocitat na zdroj napeti a baopak *)




(* no a ted tenhle zdroj pripojima na diodu. 
To znamena,ze v jistem bode bude proud diodou i ze zdroje stejny. Delame prusecik primky s krivkou. Proud ze zdroje je ivyst, proud diodou je prouddiodou, rovnase je == . A reseni rovnic je Solve. Kolik to bude ?  *)

Solve[ivyst[uu] == prouddiodou[uu], uu]  //N

(* no a vyslo nam krasne napeti na diode 2.053  *)

Show[Plot[{prouddiodou[x]},{x,0,2.5}] , Plot[{ivyst[x]},{x,0,2.5}]]

ivyst[2.053]

prouddiodou[2.053]

(*akorat u toho Plot si musite nastavit dalsi parametry, jinak si to s meritky dela, co chce  *)

(*  ***********  hotovo *************** *)

(* dale urcete , jak velke napeti by mel mit zdroj, aby diodou s odporem tekl proud 5 mA . Odpor bude stale 200 Ohmu *)



(* Takze potrebujeme znat napeti na diode pro proud 5 mA*)
Solve[prouddiodou[uuu] == 5,uuu]

(* a je to tady, 1.941 V  *)

(*napeti na odporu pri proudu 5 mA je .... , a napeti zdroje je hracka.  *)

(*jak velky proud potece diodou, kdyz je na diode napeti 1.6 V ?? To proste tupe dosadime  *)

prouddiodou[1.6]

(*a dale si s tim muzete hrat podle libosti *)